次のようなトリガーを作成したいと思います。
- AMOUNT フィールドが 100 未満の場合、AMOUNT フィールドには自動的に 100 が挿入されます。
- 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が発生します