我必须在某些条件下从表中复制单行。
假设这是我的表:
ProductName ProductCount Isactive latest
AA 1 1 1
Bb 5 1 1
现在,假设我要编辑第一行;我将要做的是我不会编辑第一行本身,但我想复制该特定行,然后我想更新该行。
在上面的场景中,我想更新ProductCount
,然后我希望输出为:
ProductName ProductCount Isactive latest
AA 1 1 0
Bb 5 1 1
AA 6 1 1
我们怎么做?
答案 0 :(得分:3)
使用可以使用Instead of Update Trigger
执行此操作,但是,您希望在主表中保留历史数据,这有点奇怪。
这只是一个想法,你可能需要改变一下才能使它适用于所有场景
CREATE TABLE tests
(
ProductName VARCHAR(50),
ProductCount INT,
Isactive INT,
latest INT
)
INSERT tests
VALUES ('AA',1,1,1 ),
('Bb',5,1,1)
go
CREATE TRIGGER [DBO].[TRG_tests_UPD]
ON tests
INSTEAD OF UPDATE
AS
BEGIN
INSERT INTO tests
(ProductName,ProductCount,Isactive,latest)
SELECT ProductName,ProductCount,Isactive,1
FROM inserted
UPDATE A
SET latest = 0
FROM tests a
JOIN deleted D
ON a.ProductName = D.ProductName
END
UPDATE tests
SET ProductName = 'Prdp'
WHERE ProductName = 'AA'
答案 1 :(得分:1)
首先插入然后进行更新..它必须分两步......