본문 바로가기
MySql

MySQL MYSQL에서 INSERT TRIGGER 전에 만들기

by 베이스 공부 2020. 11. 1.
반응형

mySQL Bench에서 BEFORE INSERT TRIGGER를 만드는 데 도움이 필요합니다. 이 제발 새로운 메신저.

CREATE TABLE `quincyninying`.`toytracking` (
`Toyid` INT NOT NULL,
`ToyName` VARCHAR(50) NULL,
`Toycost` DECIMAL NULL,
`ToyAction` VARCHAR(50) NULL,
`ActionDate` DATETIME NULL,
 PRIMARY KEY (`Toyid`));

CREATE TABLE `quincyninying`.`toy` (
`Toyid` INT NOT NULL,
`ToyName` VARCHAR(50) NULL,
`Toycost` DECIMAL NULL,
PRIMARY KEY (`Toyid`));

INSERTED되는 장난감 테이블 레코드의 정보, 'INSERT'가 될 하드 코딩 된 ToyAction 및 레코드가 삽입 된 현재 날짜 및 시간을 사용하여 toytracking 테이블에 레코드를 추가하는 장난감 테이블에 BEFORE INSERT 트리거를 만듭니다.

ERROR 1054: Unknown column 'inserted' in 'NEW' SQL Statement:
CREATE DEFINER = CURRENT_USER TRIGGER `quincyninying`.`toy_BEFORE_INSERT` BEFORE INSERT ON `toy` 
FOR EACH ROW
BEGIN
    IF new.inserted THEN
        SET @toyaction = 'DELETE';
    ELSE 
        SET @toyaction = 'NEW';
    END IF;

    INSERT INTO `quincyninying`.`toytracking` (toyId, ToyName, ToyCost,     Toyaction, ActionDate)
    VALUES       (new.toyid, new.Toyname, new.Toycost,@Toyaction, now());

END

"오류 1054 : 'NEW'에 알 수없는 열 '삽입'"라는 오류가 표시됩니다.

 

해결 방법

 

해당 이름의 열이 없으므로 IF new.inserted 테스트를 제거하고 ToyAction INSERT 를 하드 코딩합니다. > 요구 사항에 명시된대로 열.

CREATE DEFINER = CURRENT_USER TRIGGER `quincyninying`.`toy_BEFORE_INSERT` BEFORE INSERT ON `toy` 
FOR EACH ROW
BEGIN
    INSERT INTO `quincyninying`.`toytracking` (toyId, ToyName, ToyCost, Toyaction, ActionDate)
    VALUES (new.toyid, new.Toyname, new.Toycost, 'INSERT', now());
END

 

참조 페이지 https://stackoverflow.com/questions/40521292

 

 

반응형

댓글