可不可以用触发器更新另一个表同时更新自己
时间:2011-12-06
来源:互联网
有2个表,表A包含3列a0、a1、a2,表B包含2列b0、b1。我希望在A表插入新一行时输入a0、a1赋值,然后set b1=a1*2 where b0=a0。之后再根据b1确定新插入的行的a2的值,如a2=b1+5。能不能用一个表A的触发器解决?
作者: shypzms 发布时间: 2011-12-06
可以,用 INSTEAD OF 触发器.
从 inserted 表中获取更新数据,向B表更新,再用B与inserted表连接获得a2,然后插入表A.
从 inserted 表中获取更新数据,向B表更新,再用B与inserted表连接获得a2,然后插入表A.
作者: qianjin036a 发布时间: 2011-12-06
这儿
http://blog.csdn.net/qianjin036a/article/details/6136588
有instead of 触发器的例子.
http://blog.csdn.net/qianjin036a/article/details/6136588
有instead of 触发器的例子.
作者: qianjin036a 发布时间: 2011-12-06
触发器。
作者: fredrickhu 发布时间: 2011-12-06
SQL code
/* 有2个表,表A包含3列a0、a1、a2,表B包含2列b0、b1。我希望在A表插入新一行时输入a0、a1赋值,然后 set b1=a1*2 where b0=a0。之后再根据b1确定新插入的行的a2的值,如a2=b1+5。能不能用一个表A的触发器解决? */ create table t1(a0 int,a1 int,a2 int) insert into t1 select 1,23,31 create table t2(b0 int,b1 int) insert into t2 select 1,10 insert into t2 select 2,25 insert into t2 select 3,18 go create trigger updatetwotb on t1 instead of insert as begin update b set b1=a.a1*2 from t2 b inner join inserted a on b.b0=a.a0 insert into t1 select a.a0,a.a1,b.b1+5 from inserted a inner join t2 b on a.a0=b.b0 --不过如果是这个算法的话,直接用 a1*2+5 不就行了么! end go insert into t1(a0,a1) select 2,50 select * from t1 select * from t2 /* a0 a1 a2 ----------- ----------- ----------- 1 23 31 2 50 105 (2 行受影响) b0 b1 ----------- ----------- 1 10 2 100 3 18 (3 行受影响) */ go drop table t1,t2
作者: qianjin036a 发布时间: 2011-12-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28