指定字段触发器更新

chai1338 2015-08-19 11:54:48
table A
id LanguageID chinesename name avid
1 7 测试 test 11
2 8 测试 测试 11

触发器指定LanguageID=8的chinesename被更新时,更新其他LanguageID<>8,相同chinesename(未更新之前的值)、相同acid(未更新之前的值)的chinesename值
如何判断指定的LanguageID=8 才不会陷入死循环



-- =============================================
CREATE TRIGGER updateProductAttributeValueByChineseName
on A
for update
as
if update(ChineseName)
begin
if(i.LanguageID=8)

update [a] set ChineseName=i.ChineseName
from a p,Deleted d,Inserted i
where p.ChineseName=d.ChineseName and p.avid=d.avid and p.LanguageID<>8
end

报错 无法绑定由多个部分组成的标识符 "i.LanguageID"。
因为无法执行 所以也不知道其他的条件写的是否正确
...全文
98 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
shoppo0505 2015-08-19
这句if(i.LanguageID=8)判断中读取不到i.LanguageID,所以报错
回复
试试这个:
CREATE TRIGGER updateProductAttributeValueByChineseName
on A
for update
as
 if update(ChineseName)
 begin 
if exists(select * from inserted i where i.LanguageID=8)
  update [a] set ChineseName=i.ChineseName
  from a p,Deleted   d,Inserted i
  where p.ChineseName=d.ChineseName and p.avid=d.avid and p.LanguageID<>8

  end
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-08-19 11:54
社区公告
暂无公告