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
你想'插入后'。插入后发生,但在插入完成之前发生。用'而不是'在触发器中完成什么是_触发语句要做的事情。 –