请问一个触发器中update操作的问题
现在有A、B两个完全一样的表,区别在于A表中的数据是唯一的,B表相当于是A表的操作记录。
由于我现在使用的软件只能新插入数据不能更新,现在需要对A表中的数据做更新同时在B表中将更新后的数据留备份,请问我如何才能完成此操作呢?
如果我直接将更新后的数据插入到B表中,然后写个insert触发器,发现有insert操作后,立即将新插入的数据根据ID将A表中的对应数据更新的话,我必须对A表中的每一列写个 set 语句,请问有什么简单的语句吗?例如象: insert into table_name select * from inserted 这样的方法。
问题点数:20、回复次数:6Top
1 楼wangdehao(找找找(现在很幸福))回复于 2006-03-16 09:43:46 得分 0
---insert触发器中
update A
set col1 = b.col1,col2=b.col2,.... from A,inserted B ---更新字段
where A.id=B.id----连接条件Top
2 楼yao7785(天狼星)回复于 2006-03-16 09:48:42 得分 0
我就是不想写这么多的 set col1 = b.col1,col2=b.col2,.... 才问有没有简单的写法。
Top
3 楼huailairen(流浪猫--很想养只猫,带着它到处流浪。)回复于 2006-03-16 10:36:14 得分 10
先删除 后添加
delete from b where b.id in (select id from inserted)
insert into b select * from insertedTop
4 楼BC_BOY(何家豪)回复于 2006-03-17 22:37:11 得分 10
update的操作原理就是先删除再添加!
可以从inserted表和deleted表取出差异,然后update
或者先删除了再从写记录!(如果表的索引多的话,建议用第一种方法)Top
5 楼ReViSion(和尚)回复于 2006-03-17 22:44:07 得分 0
不要偷懒嘛Top
6 楼ReViSion(和尚)回复于 2006-03-17 22:44:54 得分 0
不知道还有什么好的写法Top




