Mysql 触发器

以下语句会出错,因为Mysql语句中遇到分号则结束,解决办法:使用delimiter修改终止符

create trigger name (触发器名称)
after/befor(触发时间)
insert/update/delete(触发事件,当填写其中一种,其他的操作不会激活触发器)
on(监视的表,在哪张表上建立触发器)
for each row(行级触发器)
begin
(sql语句,希望改变的数据,可写多条语句,尽量不操作多次一张表,每条语句必须使用;结尾)
end;

insert_trigger

	BEGIN
	if(NEW.id not in (select sourceid from site_newsall where catid = NEW.catid and sourceid = NEW.id ))then
		insert into table1 (value1,value2,value3)
		values (NEW.value1,NEW.value2,NEW.value3);
	end if;
	END

update_trigger

	BEGIN
	if(NEW.id not in (select sourceid from site_newsall where catid = NEW.catid and sourceid = NEW.id )) then
		insert into table1 (value1,value2,value3)
		values (NEW.value1,NEW.value2,NEW.value3);
	 ELSE
		UPDATE table1  SET value1=NEW.value1,value2=NEW.value2,value3=NEW.value3 where  id=NEW.ID;
	end if;
	END

delete_trigger

	BEGIN
	if( OLD.id in (select id from table1 where id = OLD.id  ))
		then
			DELETE FROM table1 where  id=OLD.id;
	end if;
	END

当前表更新后修改当前表

BEGIN
    set NEW.field1 = (SELECT * FROM (SELECT id from table1 WHERE id = NEW.id ) AS TEM1);
    set NEW.field2 = (select *from ( select sum(number) from table3 where userid = NEW.userid) );
END;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值