sql server触发器联接不起作用
我一直在研究这个触发器,没能弄明白。我从这里的人那里得到了一些帮助,取得了很大的进步,但还没有完成 这是我的触发器和join。插入没有发生。。。。我无法调试,也看不到是否存在错误。不幸的是,我正在使用SQLWeb工具sql server触发器联接不起作用,sql,sql-server,insert,left-join,inner-join,Sql,Sql Server,Insert,Left Join,Inner Join,我一直在研究这个触发器,没能弄明白。我从这里的人那里得到了一些帮助,取得了很大的进步,但还没有完成 这是我的触发器和join。插入没有发生。。。。我无法调试,也看不到是否存在错误。不幸的是,我正在使用SQLWeb工具 CREATE trigger Posts_Raw_To_Queue_Trigger ON SendNotificationPostsRaw FOR INSERT AS BEGIN INSERT INTO SendNotificationPostsQueue (UserID,
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
试试这个-
CREATE TRIGGER dbo.Posts_Raw_To_Queue_Trigger
ON dbo.SendNotificationPostsRaw
-- please write this if SendNotificationPostsRaw is table
AFTER INSERT
-- or write this if SendNotificationPostsRaw is view
INSTEAD OF INSERT
--FOR INSERT
AS BEGIN
-- check if thete are any rows
IF NOT EXISTS(
SELECT 1
FROM INSERTED i
) RAISERROR('Nothing to insert', 16, 1)
INSERT INTO dbo.SendNotificationPostsQueue
(
UserID
, PostID
, SpecialityID
)
SELECT
I.PostID
, I.UserID
, P.CategoryID
FROM INSERTED AS I
JOIN PostCategoryRelations P ON I.PostID = P.PostId
END
您加入的PostCategoryRelations记录是在同一事务中写入的,还是已经存在?您在
INSERT
和SELECT
中的顺序不同:INSERT…(UserId,PostId,…)选择I.PostId,I.UserId
。是打字错误吗?如果不是,它可能会因为引用完整性的违反而失败。你是对的,但这并不能解决它though@AndyNichols,PostCategoryRelations记录应在此触发器之前写入触发器在触发器执行之前是否已启动显式BEGIN事务?如果您从触发器打印了@TRANCOUNT的值,您可以看到这一点。可能您有一个未提交的事务。