您應該使用before insert
和獲取列的值,你需要使用new
所以觸發器將作爲
delimiter //
create trigger tr_NewTeacher before insert on teacher
for each row
begin
if new.salaRY>1300 AND new.budget<15000 then
signal sqlstate '45000' set message_text = 'Your error message';
end if;
end;//
delimiter ;
這裏是一個在mysql中的測試用例
mysql> create table teacher (id int auto_increment primary key,salaRY int , budget int);
Query OK, 0 rows affected (0.17 sec)
mysql> delimiter //
mysql> create trigger tr_NewTeacher before insert on teacher
-> for each row
-> begin
-> if new.salaRY>1300 AND new.budget<15000 then
-> signal sqlstate '45000' set message_text = 'Your error message';
-> end if;
-> end;//
Query OK, 0 rows affected (0.14 sec)
mysql> insert into teacher (salaRY,budget) values (1200,16000);
Query OK, 1 row affected (0.04 sec)
mysql> insert into teacher (salaRY,budget) values (1400,13000);
ERROR 1644 (45000): Your error message
mysql> select * from teacher ;
+----+--------+--------+
| id | salaRY | budget |
+----+--------+--------+
| 1 | 1200 | 16000 |
+----+--------+--------+
1 row in set (0.00 sec)
爲什麼在插入之後,爲什麼不在之前?無需回滾然後 – Hawk