MySql触发器语法总结

时间:2022-08-15 11:05:37

经过昨天多次失败,今天终于将我要实现的触发器功能写成功了,触发器代码如下:

-- use dbfortest;
drop trigger if exists tg_before_insert_on_dttest; -- 分号必须要
create trigger tg_before_insert_on_dttest before insert
on dttest for each row /* for each row必须要(但是其它的数据库貌似可要可不要,又或者我的MySQL选择的引擎必须要有for each row) */begin
-- declare num int;
--
select count(*) into num from dttest;
--
if (num = 0) then
--
set num:=num+1;
--
else
--
set num:=num+2;
--
end if;
if((select count(*) from dttest)>0) then /* then必须要;if后面第一层()可要可不要,不要的话要加空白符隔开;(select count(1) from dttest)>0换成(select count(1) from dttest>0)是错的 */
 /* MySQL这里是不能加delete、insert、update的,否则此触发器触发执行时会报错,但语法是没错的。 */ delete from dttest where new.Id = 10; /* 分号必须要;如果触发器触发的条件是delete的话,则这里只有old而没有new,如果是update的话则两个都有。 */
end if; /* 分号必须要,有if就必须有end if,之前就是因为少了这句才一直不通过。 */
end -- 这个end后面可加可不加分号