修改触发器:已更新或删除的行值要么不能使该行成为唯一行

低调的感觉 2015-05-08 11:54:15
ALTER TRIGGER Trigger_Update_PRODUCTINFO
ON [dbo].[PRODUCTINFO]
FOR UPDATE
AS
BEGIN
--定义所需变量
declare
@productId nvarchar(255),
@productName nvarchar(255)

--获取更新后的数据
select @productId = id,
@productName = productname
from inserted;

--更新库存商品信息
update bcs_ProductInfoStore
set productName = @productName,
where productID = @productId
END
GO


执行报错:
已更新或删除的行值要么不能使该行成为唯一行
...全文
645 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2015-05-11
  • 打赏
  • 举报
回复
索引出问题了。
1)把 bcs_ProductInfoStore 的数据复制到另外一个表中,
2)TRUNCATE TABLE bcs_ProductInfoStore
3)再把数据复制进来。
tcmakebest 2015-05-10
  • 打赏
  • 举报
回复
这句话是出自微软么,越看越不懂. bcs_ProductInfoStore 表有多少个字段, 难道更新后有两条记录的所有字段都相同了么(瞎猜了)
xiaoxiangqing 2015-05-09
  • 打赏
  • 举报
回复
是不是主键重复了
卖水果的net 版主 2015-05-08
  • 打赏
  • 举报
回复
你是不是一次更新了很多条数据 ? 就这一句就够了,其他的都不要

begin
    update A
       set A.productName = B.productName
      from bcs_ProductInfoStore A , inserted B 
     where A.productID = B.productId
end 

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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