本人想在触发器中,假如a=1 就取消这条update
例如:update t1 set a=2 where a=1 那么这条update取消
update t1 set a=2 where a=3 这条update通过
create tigger….
这里应该怎么写。
end….
例如:update t1 set a=2 where a=1 那么这条update取消
update t1 set a=2 where a=3 这条update通过
create tigger….
这里应该怎么写。
end….
解决方案
20
你用这个试试:
mysql> delimiter $$ mysql> create trigger tri_tb2 -> before update on tb2 for each row -> begin -> if new.id<>1 and old.id is not null then -> SIGNAL SQLSTATE "HY001" SET MESSAGE_TEXT = "error:拒绝更新"; -> end if; -> end$$ Query OK, 0 rows affected (0.07 sec) mysql> insert into tb2 values(1,"b"); -> $$ Query OK, 1 row affected (0.06 sec) mysql> select * from tb2; -> $$ +--+--+ | id | name | +--+--+ | 1 | aa | | 1 | bb | | 1 | cc | | 1 | aa | | 2 | aa | | 2 | bb | | 2 | dd | | 2 | cc | | 10 | a | | 1 | a | | 2 | a | | 1 | b | +--+--+ 12 rows in set (0.00 sec) mysql> update tb2 set id = 20 where id = 1; -> $$ ERROR 1644 (HY001): error:拒绝更新 mysql> select * from tb2; -> $$ +--+--+ | id | name | +--+--+ | 1 | aa | | 1 | bb | | 1 | cc | | 1 | aa | | 2 | aa | | 2 | bb | | 2 | dd | | 2 | cc | | 10 | a | | 1 | a | | 2 | a | | 1 | b | +--+--+ 12 rows in set (0.00 sec)