Если существует в триггере - PullRequest
0 голосов
/ 08 июня 2011

Есть ли способ проверить, существует ли значение в таблице, в которую я хочу вставить активированный триггером? Если значение существует, я хочу, чтобы ничего не было сделано, а если нет, я бы хотел, чтобы оно было вставлено.

Это мой текущий триггер

ALTER TRIGGER [dbo].[Update]
On [dbo].[A] 
AFTER UPDATE
AS
Declare @Id int;
SELECT @Id = Issue FROM Inserted


INSERT INTO dbo.[B] (id, problem)
    SELECT BugId, ProjectID
    FROM dbo.[C]
    WHERE BugId = @Id and (projectid = 547)

Большое спасибо

Ответы [ 2 ]

1 голос
/ 08 июня 2011

inserted может содержать несколько строк. И left join может быть вашим другом для проверки того, существуют ли уже строки:

ALTER TRIGGER [dbo].[Update]
On [dbo].[A] 
AFTER UPDATE
AS

INSERT INTO dbo.[B] (id, problem)
    SELECT BugId, ProjectID
    FROM
       dbo.[C]
          inner join
       inserted i
          on
              c.BugID = i.Issue
          left join
       dbo.B
           on
               B.ID = c.BugID
    WHERE
        C.projectid = 547 and B.BugID is null
1 голос
/ 08 июня 2011

Вы должны сделать это, как описано в этом посте SO . Используйте оператор IF для проверки существования.

...