插入新行时,我需要删除现有行。
例如,存在一个现有行,其状态为ready
,ID为2478
。
当插入新行时,假设状态为completed
并且ID为2478
,触发器将找到匹配的ID 2478
并删除行,因为状态为{{1} }。
同时,我还需要删除插入的行(状态为completed
的行)
这可以通过触发器完成吗?例如:completed
答案 0 :(得分:2)
是的,这可以在触发器中完成。每当为该ID插入状态为completed
的行时,以下示例都会删除该ID的所有行。
CREATE TABLE dbo.YourTable(
ID int
,Status varchar(10)
CONSTRAINT PK_YourTable PRIMARY KEY(ID, Status)
);
GO
CREATE TRIGGER TR_YourTable ON dbo.YourTable
FOR INSERT
AS
SET NOCOUNT ON;
DELETE target
FROM dbo.YourTable AS target
JOIN inserted ON inserted.ID = target.ID
WHERE inserted.Status = 'completed';
GO
INSERT INTO dbo.YourTable VALUES(2478,'pending');
SELECT * FROM dbo.YourTable;
INSERT INTO dbo.YourTable VALUES(2478,'ready');
SELECT * FROM dbo.YourTable;
INSERT INTO dbo.YourTable VALUES(2478,'completed');
SELECT * FROM dbo.YourTable;
GO