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

修改触发器:已更新或删除的行值要么不能使该行成为唯一行
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


执行报错:
已更新或删除的行值要么不能使该行成为唯一行 
------解决思路----------------------
你是不是一次更新了很多条数据 ? 

就这一句就够了,其他的都不要

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

------解决思路----------------------
是不是主键重复了
------解决思路----------------------
这句话是出自微软么,越看越不懂.
bcs_ProductInfoStore 表有多少个字段, 难道更新后有两条记录的所有字段都相同了么(瞎猜了)
------解决思路----------------------
索引出问题了。
1)把 bcs_ProductInfoStore 的数据复制到另外一个表中,
2)TRUNCATE TABLE bcs_ProductInfoStore 
3)再把数据复制进来。