SQL-триггер для проверки, если пользователь считан в таблице - PullRequest
2 голосов
/ 26 февраля 2012

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

ALTER TRIGGER tR_CustomerCheck ON CUSTOMER 
FOR INSERT, UPDATE 
AS
IF EXISTS
    (SELECT *
    FROM CUSTOMER AS C
        JOIN inserted as I
            ON C.UserID  = I.UserID 
    WHERE C.UserID = I.UserID )
    BEGIN
        PRINT 'Customer already exists.';
        ROLLBACK TRANSACTION;
        RETURN;
    END;

Похоже, что строка вставляется, а затем проверяется, поэтому всегда происходит сбой.Я уверен, что это должно быть простое исправление, но я не могу точно определить это.

1 Ответ

1 голос
/ 26 февраля 2012

Вместо триггера FOR/AFTER используйте триггер INSTEAD OF. Хотя я должен согласиться с комментарием wildplasser. Это учебник с использованием уникального ограничения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...