2013-01-09 3 views
2

필드 목록에서 UNKNOWN COLUMN '양'양 필드 < 100 금액 필드가 자동으로 삽입MySQL의 오류 1054 : 그래서 나는 트리거를 만들

  1. 경우 100
  2. 하면 금액> (100) 입력 된 값은 AMOUNT 필드에 삽입되어야합니다.

테이블 :

CREATE TABLE DB_triggers.acc(
    C_ID INT(3) UNIQUE NOT NULL AUTO_INCREMENT , 
    customer_name CHAR(30),amount FLOAT(10,2) UNSIGNED, 
    date_created DATE,PRIMARY KEY(C_ID,customer_name) 
) AUTO_INCREMENT=100; 

트리거 :

DELIMITER $$ 
    CREATE TRIGGER trig_acc 
    BEFORE INSERT ON acc 

    FOR EACH ROW 

    BEGIN 
    IF amount <100 THEN 

    INSERT INTO acc VALUES(new.c_id,new.customer_name,100,new.now()); 
    ELSE 
    INSERT INTO acc VALUES(new.c_id,new.customer_name,new.amount,new.now()); 

    END IF; 

END $$ 
DELIMITER ; 

하지만,이 값을 삽입했을 때

INSERT INTO 
    acc(c_id,customer_name,amount,date_created) 
VALUES 
    (DEFAULT,'ABC',1000,NOW()); 

에러 1,054

+0

는 어떤 일이 일어날 것입니다 금액은 정확히 100 일 언제? –

답변

0

에게 준다 변경 IF 금액 < 100 THEN to IF new.amount < 100 THEN 그러면 작동합니다.

이 시도 :

DELIMITER $$ 
CREATE TRIGGER trig_acc 
BEFORE INSERT ON acc 
FOR EACH ROW 

BEGIN 
IF new.amount <100 THEN 

INSERT INTO acc VALUES(new.c_id,new.customer_name,100,new.now()); 
ELSE 
    INSERT INTO acc VALUES(new.c_id,new.customer_name,new.amount,new.now()); 

END IF; 

END $$ 
DELIMITER ; 
+0

NOW ... 알겠습니다 ... 오류 1442 : 저장된 함수/트리거를 호출 한 문에서 이미 사용 중이므로 'acc'테이블을 저장된 함수/트리거에서 업데이트 할 수 없습니다. – user1948493

+0

@ user1948493 죄송합니다. 동일한 테이블에 행을 삽입 할 수 없다는 사실을 잊어 버렸습니다. 다른 테이블에 레코드를 삽입 할 수 있습니다. 동일한 테이블에 새 레코드를 삽입하여 어떤 작업을 수행하려고하는지 알고 싶습니다. –