SQL Trigger, чтобы проверить, существует ли значение в другой таблице после вставки - PullRequest
0 голосов
/ 29 июня 2018

Я пытался заставить срабатывать триггер. Моя цель состоит в том, чтобы иметь триггерную проверку, существует ли значение в другой таблице при вставке в таблицу. Ниже приведен триггер, который не работает:

CREATE TRIGGER trigger1
ON  table1
AFTER INSERT     
AS 
declare @tId int

IF EXISTS ((Select @tId from inserted i join table2 on i.tId=table2.Id 

join table3 on i.tId=table3.tId 

where i.tId NOT IN (SELECT tId from  table3) 

and table2.ApplicationDate > '2018-01-31 00:00:00.0000000' 

and table2.cnumber is NOT NULL))

BEGIN

    ROLLBACK transaction
    SET NOCOUNT ON;

END

GO

Может кто-нибудь указать мне правильное направление, пожалуйста.

1 Ответ

0 голосов
/ 29 июня 2018

Ваш вопрос неясен. Эти части в комбинации не имеют смысла:

join table3 on i.tId=table3.tId 
where i.tId NOT IN (SELECT tId from table3)

-> НЕТ СООТВЕТСТВУЮЩИХ СТРОК!

Простое решение для проверки обеих таблиц без зависимости между ними:

CREATE TRIGGER trigger1
    ON table1 AFTER INSERT     
AS 
BEGIN
    IF (EXISTS (SELECT Id FROM table2 WHERE Id IN(SELECT tId FROM Inserted))
        OR EXISTS (SELECT Id FROM table3 WHERE Id IN(SELECT tId FROM Inserted))) BEGIN
        ROLLBACK;
    END
END
...