Я должен создать после триггера. (СТРОГО ТОЛЬКО ПОСЛЕ ТОГО ТРИГГЕРА). Я думаю, что нахожусь на правильном пути, но, похоже, не могу заставить его нормально работать. Кажется, что он всегда запускает триггер и отображает сообщение об ошибке во всех операторах вставки, а не только в том случае, когда есть дубликат. Это то, что у меня есть;Условный после триггера
CREATE TRIGGER Copies
ON table
AFTER INSERT
AS
Declare @number int
Set @number = (Select Count(*) from inserted)
If @number >0
(
SELECT *
FROM table O
JOIN inserted AS i
ON t.q_id = i.q_id
WHERE O.username = i.username
AND t.q_id = i.q_id
)
BEGIN
RAISERROR ('Already answered', 16, 1);
ROLLBACK TRANSACTION;
RETURN
END;
GO
Ps. Пожалуйста, не отвечайте на триггеры. Спасибо :)
Простой комментарий, где т быть псевдонимом? –
Также почему вы не получаете ошибку при попытке использовать() для инкапсуляции условных операторов ... Не должно быть IF (@Number> 0) BEGIN .... END ELSE BEGIN rolbackcode здесь END –
К сожалению, SELECT * FROM table O - этот O должен быть t ВСТРОЕН ВХОД AS i изменил его в моем скрипте. нет разницы:/ – james431