我有一個表中的兩個觸發器,在插入一個火災和從INSERT觸發器更新時觸發更新後未觸發
CREATE TRIGGER [dbo].[eTteamTg]
ON [dbo].[entryTable]
AFTER INSERT
AS
BEGIN
UPDATE entryTable
SET shiftTeam = (SELECT TOP 1 shiftTeamMemb.teamId
FROM shiftTeamMemb
WHERE shiftTeamMemb.personalNumber = i.personalNumber)
FROM entryTable
INNER JOIN inserted i ON i.ID = entryTable.ID
END
而第二個觸發更新
後與來自其他表的其他信息更新該行CREATE TRIGGER [dbo].[eThistoryUpdTg] ON [dbo].[entryTable]
AFTER update
AS
BEGIN
INSERT INTO eThistory(my columns)
SELECT
*, HOST_Name() + ' ' + SUSER_NAME() + ' Upd', GETDATE()
FROM
deleted
END
我需要做的是不火AFTER UPDATE
觸發,當我與AFTER INSERT
觸發更新行。可能嗎 ?
你'插入'觸發似乎被打破。這個子查詢是不相關的(它引入了一個單獨的引用來插入''而不是我猜你正在嘗試做什麼,參考'i'),所以多行插入將產生一個錯誤,沿着「子查詢返回更多比一個價值「。 –
哦,我現在看到了,更新了這個問題@Damien_The_Unbeliever –
對不起,我錯了。它不會返回該錯誤。相反,它會默默地破壞你的數據,因爲你已經用'top 1'強制它。再次,這個子查詢是*不相關*。因此,如果'inserted'包含* multiple * rows與* different *'personalNumber'值,那麼*這些值中的一個將成功地在'shiftTeamMemb'中發生查找,然後*每個原來插入的行將接收該值。 –