指定字段触发器更新

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"。
因为无法执行 所以也不知道其他的条件写的是否正确
...全文
140 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shoppo0505 2015-08-19
  • 打赏
  • 举报
回复
这句if(i.LanguageID=8)判断中读取不到i.LanguageID,所以报错
LongRui888 2015-08-19
  • 打赏
  • 举报
回复
试试这个:
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

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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