0
我有這個檢查插入語句條件的觸發器。它顯示正確的消息,但它不會添加值(儘管它顯示msg「成功添加」)。有誰知道問題是?爲什麼觸發器沒有向表中插入新值?
CREATE TRIGGER trg_SentMessage_Insteadof
ON messages
INSTEAD OF INSERT
AS
BEGIN
IF (EXISTS (SELECT inserted.*
FROM inserted
LEFT OUTER JOIN matchs AS m ON (inserted.sentFrom = m.userID1
AND inserted.sentTo = m.userID2)
OR (inserted.sentFrom = m.userID2
AND inserted.sentTo = m.userID1)
WHERE (m.interesting1 = 0 AND m.interesting2 = 0)))
PRINT 'Succesfully added'
ELSE
BEGIN
ROLLBACK TRANSACTION
PRINT 'You can't do that!'
END
END
例如,當我運行:
insert into messages values('2017-05-01', 'how are you', '426564774', '201827364')
應返回「成功添加」,並將其添加到表,但只顯示消息。
如果您聲明而不是觸發器,則需要執行插入操作。無論如何,不需要成爲一個'而不是'觸發器。由於「where」,你的左連接是內連接。 –
我需要where子句中的條件:\,但是你不需要代替什麼?我如何檢查插入的值,如果他們是我需要的? – reeena11
你想'插入後'。插入後發生,但在插入完成之前發生。用'而不是'在觸發器中完成什麼是_觸發語句要做的事情。 –