2013-01-09 87 views
2

我想創建一個觸發器,使:MySQL錯誤1054:在字段列表中未知列「量」

  1. 如果金額字段< 100金額字段自動插入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()); 

給出錯誤1054

+0

什麼時候會發生量會正好是100? –

回答

0

更改如果金額< 100 THEN如果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對不起,我忘了告訴你,你不能在同一張桌子上插入一行。您可以在另一個表上插入一條記錄。我想通過在同一張桌子上插入新記錄來知道你想要做什麼。 –

相關問題