mysql建立触发器问题

ruikaka16 2013-01-26 12:41:06
需要建一个触发器,在update表之后执行,及update表之后如果更新的那个字段的值小于0,则将其置为0
我这么写不对,请指教!
create trigger check_after_update_msclientmembercard
after update on ms_client_membercard
for each row
if new.remain_money < 0 then
update ms_client_membercard set remain_money = 0 where client_id = new.client_id;
...全文
223 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruikaka16 2013-01-29
  • 打赏
  • 举报
回复
引用 9 楼 bonlog 的回复:
引用 8 楼 ruikaka16 的回复:引用 7 楼 bonlog 的回复:引用 6 楼 ruikaka16 的回复:多谢以上各位的回复! 我想问如果用before的话,那还会在update ms_client_membercard后去再update remain_money < 0的记录为remain_money = 0吗,请指教! 这个,不是触发器了。 使……
create trigger update_cardstatus_after_insert_clientinfo
after insert on clienttradejour
for each row
if new.trade_item = '升级' then
insert into  ms_client_promotion (client_id,client_name,promotion_time,after_card,receive_money,operator)
select client_id,name,trade_time,card_type,receive_money,operator from clienttradejour where  client_id = new.client_id
麻烦帮我看看这个哪里有错啊,报错信息很少,看不出来
bonlog 2013-01-29
  • 打赏
  • 举报
回复
引用 8 楼 ruikaka16 的回复:
引用 7 楼 bonlog 的回复:引用 6 楼 ruikaka16 的回复:多谢以上各位的回复! 我想问如果用before的话,那还会在update ms_client_membercard后去再update remain_money < 0的记录为remain_money = 0吗,请指教! 这个,不是触发器了。 使用触发器的,前提是:触发其中一表,而引起另……
加上 end if then 看看报什么错误。 此代码是可行的,再有错误,你使用排除法,找找。
bonlog 2013-01-29
  • 打赏
  • 举报
回复
引用 10 楼 ruikaka16 的回复:
引用 9 楼 bonlog 的回复:引用 8 楼 ruikaka16 的回复:引用 7 楼 bonlog 的回复:引用 6 楼 ruikaka16 的回复:多谢以上各位的回复! 我想问如果用before的话,那还会在update ms_client_membercard后去再update remain_money < 0的记录为remain_money = 0吗,请指教……
reate trigger update_cardstatus_after_insert_clientinfo
after insert on clienttradejour
for each row
begin
if new.trade_item = '升级' then
insert into  ms_client_promotion (client_id,client_name,promotion_time,after_card,receive_money,operator)
select client_id,name,trade_time,card_type,receive_money,operator from clienttradejour where  client_id = new.client_id
end if;
end;
ruikaka16 2013-01-28
  • 打赏
  • 举报
回复
引用 7 楼 bonlog 的回复:
引用 6 楼 ruikaka16 的回复:多谢以上各位的回复! 我想问如果用before的话,那还会在update ms_client_membercard后去再update remain_money < 0的记录为remain_money = 0吗,请指教! 这个,不是触发器了。 使用触发器的,前提是:触发其中一表,而引起另一表的响应。 即一定要有updat……
谢谢! 请问我这个触发器有什么问题,总是无法建立
create trigger update_cardstatus_after_insert_clientinfo
after insert on clienttradejour
for each row
if new.trade_item = '升级' then
insert into  ms_client_promotion (client_id,client_name,promotion_time,after_card,receive_money,operator)
select client_id,name,trade_time,card_type,receive_money,operator from clienttradejour where  client_id = new.client_id
bonlog 2013-01-28
  • 打赏
  • 举报
回复
引用 6 楼 ruikaka16 的回复:
多谢以上各位的回复! 我想问如果用before的话,那还会在update ms_client_membercard后去再update remain_money < 0的记录为remain_money = 0吗,请指教!
这个,不是触发器了。 使用触发器的,前提是:触发其中一表,而引起另一表的响应。 即一定要有update,insert,delete发生,才行。否则,不能用。
ruikaka16 2013-01-27
  • 打赏
  • 举报
回复
多谢以上各位的回复! 我想问如果用before的话,那还会在update ms_client_membercard后去再update remain_money < 0的记录为remain_money = 0吗,请指教!
ACMAIN_CHM 2013-01-26
  • 打赏
  • 举报
回复
create trigger check_after_update_msclientmembercard before update on ms_client_membercard for each row if new.remain_money < 0 then set new.remain_money=0
dong_y888 2013-01-26
  • 打赏
  • 举报
回复
delimiter $
create trigger check_after_update_msclientmembercard
before update on ms_client_membercard
for each row
begin
   if new.remain_money < 0 then 
      set new.remain_money=0;
   end if;
end $
ruikaka16 2013-01-26
  • 打赏
  • 举报
回复
引用 2 楼 dong_y888 的回复:
SQL code?123456789delimiter $create trigger check_after_update_msclientmembercardafter update on ms_client_membercardfor each rowbegin if new.remain_money < 0 then set new.remain_……
谢谢回复! 我试了你的方法,但是报错“Updating of NEW row is not allowed in after trigger”
dong_y888 2013-01-26
  • 打赏
  • 举报
回复
delimiter $
create trigger check_after_update_msclientmembercard
after update on ms_client_membercard
for each row
begin
   if new.remain_money < 0 then 
      set new.remain_money=0;
   end if;
end $
rucypli 2013-01-26
  • 打赏
  • 举报
回复
你这个更新自身的貌似用触发器不好使 用存储过程实现比较好

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧