日期:2014-05-18  浏览次数:20483 次

sqlserver 行级触发器
我有一个表 JSKKEB,其中有两个品号、 101, 201 同时我写了一个 触发器, 一插入就都触发
我想要当品号为201时候才触发、 应该怎样做呢?
 
ALTER TRIGGER [LWT_TRIG_JSKKEB] ON [dbo].[JSKKEB] FOR INSERT AS
DECLARE @v_spfl varchar(10)

-- 插入触发
 IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
BEGIN
--IF @v_spfl = '02' --商品分类
--BEGIN
UPDATE JSKKEB SET KEB007 = I.KEB980* I.KEB981* T.DEA980* T.DEA981* I.KEB982,
KEB039 = I.KEB980* I.KEB981* T.DEA980* T.DEA981* I.KEB982
FROM JSKKEB B,INSERTED I , TPADEA T WHERE B.KEB001 = I.KEB001 AND B.KEB002 = I.KEB002
AND B.KEB003 = T.DEA001
--AND B.KEB003 = '201' 
--END

END


------解决方案--------------------
SQL Server无法实现你说的行级触发器效果,你给出的示例其实已经触发了,类似的效果也可以参考Merge语法。
你可以借助前触发器来实现尽量少的数量行更新。
http://blog.csdn.net/downmoon/article/details/652878