【发布时间】:2013-04-03 18:53:47
【问题描述】:
我一直在研究这个触发器,但无法弄清楚。我从这里的人那里得到了一些帮助,取得了很大的进步,但还没有完成。
这是我的加入触发器。插入没有发生....我无法调试,也看不到错误(如果有)。不幸的是,我正在使用 SQL 网络工具
CREATE trigger Posts_Raw_To_Queue_Trigger ON SendNotificationPostsRaw
FOR INSERT
AS
BEGIN
INSERT INTO SendNotificationPostsQueue (UserID,PostID,SpecialityID)
SELECT I.PostID, I.UserID, P.CategoryId
FROM INSERTED AS I JOIN PostCategoryRelations AS P ON I.PostID= P.PostId
END
【问题讨论】:
-
您加入的 PostCategoryRelations 记录是在同一个事务中写入,还是已经存在?
-
您在
INSERT和SELECT中有不同的顺序:INSERT ...(UserId, PostId,...) SELECT I.PostID,I.UserID。是错字吗?如果没有,它可能会因为违反参照完整性而失败 -
你是对的,但这并不能解决问题
-
@Andy Nichols ,PostCategoryRelations 记录应该写在这个触发器之前
-
在触发器执行之前是否有明确的 BEGIN TRANSACTION 启动?如果您从触发器中打印了@@TRANCOUNT 的值,您可以看到这一点。也许你有一个未提交的事务。
标签: sql sql-server insert left-join inner-join