Не уверен, что мне не хватает. Когда я отлаживаю и выполняю запрос INSERT
, который я включил ниже, я вижу, что '%a%'
- это значение @Answer
, а 103 - это значение @ItemId
.
.
IF EXISTS
всегда оценивается как ложное, когда я вставляю значения, показанные ниже:
CREATE TRIGGER TR_cc_Additional_Information_Answers_INS
ON cc_Additional_Information_Answers
AFTER INSERT
AS
BEGIN
CREATE TABLE temp_answers
(
TempAnswer VARCHAR(50),
TempAdditional_Information_ItemID INT
)
INSERT INTO temp_answers (TempAnswer, TempAdditional_Information_ItemID)
SELECT Description, Additional_Information_ItemID
FROM inserted
DECLARE @Answer varchar(50)
SELECT @Answer = '''%' + t.TempAnswer + '%''' FROM temp_answers t
DECLARE @ItemId int
SELECT @ItemId = t.TempAdditional_Information_ItemID FROM temp_answers t
IF EXISTS(SELECT 1
FROM cc_Additional_Information_Answers a
WHERE a.Description LIKE @Answer
AND a.Additional_Information_ItemID = @ItemId)
BEGIN
RAISERROR('Answer is too similar to pre-existing answers for this item', 16, 1)
ROLLBACK TRANSACTION
RETURN
END
DROP TABLE temp_answers
END
GO
И это мой запрос вставки:
INSERT INTO cc_Additional_Information_Answers (Additional_Information_ItemID, Description)
VALUES (103, 'a')
И ранее существовавшая запись:
Заранее спасибо, сообщество SQL!
РЕДАКТИРОВАТЬ: это также не ведет себя, как ожидалось. , ,
INSERT INTO cc_Additional_Information_Answers (Additional_Information_ItemID, Description)
VALUES (103, 'a')
Учитывая эти данные