高分求触发器sql

mkki 2011-10-09 04:58:41
新建一个newtable,包含3个字段id,aa,bb.
功能实现当字段aa值为3时,修改bb字段为5.
当字段aa值为2时,修改bb字段为10.
求高手指教!!!
...全文
98 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
WWWWA 2011-10-10
  • 打赏
  • 举报
回复
OR
是插入?
DELIMITER $$
CREATE TRIGGER ff1 BEFORE INSERT ON newtable
FOR EACH ROW
BEGIN
SET new.bB=IF(new.aa=3,5,IF(new.aa=2,10,NEW.BB);
END$$
DELIMITER ;
mkki 2011-10-10
  • 打赏
  • 举报
回复
把我自己写的发上来供大家参考
delimiter $$
drop trigger if exists s3.tr_insert_ip_internal$$
create trigger s3.tr_insert_ip_internal before insert
on s3.IP_INTERNAL for each row
begin
if (new.status=1 && new.type=2) || (new.status=1 && new.type=3) then
set new.baseline=2;
end if;
end$$
delimiter ;

delimiter $$
drop trigger if exists s3.tr_update_ip_internal$$
create trigger s3.tr_update_ip_internal before update
on s3.IP_INTERNAL for each row
begin
if (new.status=1 && new.type=2) || (new.status=1 && new.type=3) then
set new.baseline=2;
end if;
end$$
delimiter ;
zuoxingyu 2011-10-10
  • 打赏
  • 举报
回复
照着手册写,都能摸索出来。比拿现成的SQL要有收获多了。
wwwwb 2011-10-10
  • 打赏
  • 举报
回复
怎么解决的?
mkki 2011-10-10
  • 打赏
  • 举报
回复
谢谢各位,自己解决了
chendong_j 2011-10-10
  • 打赏
  • 举报
回复
好多强淫抢分啊
ACMAIN_CHM 2011-10-09
  • 打赏
  • 举报
回复
mysql> CREATE TRIGGER tr_newtable_bi BEFORE INSERT ON newtable
-> FOR EACH ROW
-> set new.bb=case new.aa when 3 then 5 when 2 then 10 else new.bb end;
Query OK, 0 rows affected (0.17 sec)

mysql> insert into newtable values (1,2,3),(2,3,4),(3,6,9);
Query OK, 3 rows affected (0.04 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> select * from newtable;
+------+------+------+
| id | aa | bb |
+------+------+------+
| 1 | 2 | 10 |
| 2 | 3 | 5 |
| 3 | 6 | 9 |
+------+------+------+
3 rows in set (0.00 sec)

mysql>
ACMAIN_CHM 2011-10-09
  • 打赏
  • 举报
回复
CREATE TRIGGER tr_newtable_bi BEFORE INSERT ON newtable
FOR EACH ROW
set new.bb=case new.aa when 3 then 5 when 2 then 10 else new.bb end;
wwwwb 2011-10-09
  • 打赏
  • 举报
回复
如果是替换:
update newtable set bb=if(aa=3,5,if(aa=2,10,bb))
wwwwb 2011-10-09
  • 打赏
  • 举报
回复
是插入?
DELIMITER $$
CREATE TRIGGER ff1 BEFORE INSERT ON newtable
FOR EACH ROW
BEGIN
IF new.aa=3 THEN
SET new.bb=5;
END IF;
IF new.aa=2 THEN
SET new.bb=10;
END IF;
END$$
DELIMITER ;
mkki 2011-10-09
  • 打赏
  • 举报
回复
急求,谢啦

56,677

社区成员

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

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