私は1つのテーブル上の2つのトリガー、挿入時に1件の火災があり、挿入トリガーから更新する際に更新トリガーの後に発射されない
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
2つ目の火災の更新
後に他のテーブルから追加情報を持つ行を更新私がする必要がどのような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 INSERT
トリガーと行を更新していたときににAFTER UPDATE
トリガを起動できません。出来ますか ?
、このようなあなたの第2のトリガを実装'トリガーが壊れているように見えます。サブクエリは無関係です(これは、あなたがしようとしていた、 'i'を参照しているものではなく、' inserted'への別の参照を導入しています)ので、複数行の挿入は、 1つの値よりも大きい "。 –
ああ、私は今、質問を更新@Damien_The_Unbeliever –
申し訳ありませんが、間違っていた。そのエラーは返されません。代わりに、あなたは 'トップ1 'にそれを強制したので、あなたのデータを黙って壊します。このサブクエリは* uncorrelated *です。したがって、 'inserted'に* different *' personalNumber'値を持つ* multiple *行が含まれていると、それらの値の* one *は 'shiftTeamMemb'でルックアップを成功させ、*挿入された*すべての行がその値を受け取ります。 –