2

次のようなトリガーを作成したいと思います。

  1. AMOUNT フィールドが 100 未満の場合、AMOUNT フィールドには自動的に 100 が挿入されます。
  2. AMOUNT > 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が発生します

4

1 に答える 1

0

IF amount <100 THENIF 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 ;
于 2013-01-09T13:57:16.417 に答える