Триггер SQL Server удаляет существующую строку и вставляет сам - PullRequest
0 голосов
/ 26 августа 2018

Мне нужно удалить существующую строку при вставке новой строки.

Например, существует существующая строка, в которой ее статус равен ready, а идентификатор - 2478.

Когда вставляется новая строка, скажем, статус completed и идентификатор 2478, триггер найдет соответствующий идентификатор 2478 и удалит строку, так как статус completed.

В то же время мне также нужно удалить вставленную строку (одна со статусом completed)

Можно ли это сделать с помощью триггера? например: AFTER INSERT

1 Ответ

0 голосов
/ 26 августа 2018

Да, это можно сделать в триггере. В приведенном ниже примере удаляются все строки для данного идентификатора всякий раз, когда для этого идентификатора вставляется строка со статусом completed.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...