当前位置: 代码迷 >> Sql Server >> 触发器怎么只更改满足条件的语句
  详细解决方案

触发器怎么只更改满足条件的语句

热度:79   发布时间:2016-04-24 10:32:12.0
触发器如何只更改满足条件的语句
现有一张表y_civicsinformation,每次在填写hand_tel或home_tel字段时,自动update内容到另外一个字段中,一般情况下只填写其中一个字段。
使用触发器会出现三种情况,如何分别执行?
1.填写hang_tel时自动同步到home_tel。
2.填写home_tel时自动同步到hang_tel。
3.两者都填写时,就不做任何操作。
我开始写的代码如下,但是这个语句会将整张表都更新掉

ALTER TRIGGER [dbo].[pr_y_civicsinformation]
   ON  [dbo].[y_civicsinformation]
   for update
AS 
if update (hand_tel)
BEGIN
update y_civicsinformation set home_tel=hand_tel
END

求解
------解决方案--------------------
inserted中的内容是要插入到数据库中的数据,deleted中的内容是从数据库中删除的数据。你根据这两张临时表中的内容来进行更新啊
------解决方案--------------------
你的where条件呢,不加where条件可不就更新掉整个表吗
------解决方案--------------------

ALTER TRIGGER [dbo].[pr_y_civicsinformation]
   ON  [dbo].[y_civicsinformation]
   for update
AS 
if update (hand_tel)
BEGIN
update y_civicsinformation set home_tel=hand_tel
from y_civicsinformation y inner join inserted i on y.id=i.id
END
  相关解决方案