SQL Server 2008
トリガーを定義しました
'INSTEAD OF INSERT'の場合はTABLE_A、'INSTEADOFINSERT'の場合はTABLE_B。
両方のトリガーは、挿入されたテーブルとのマージを実行します。
TABLE_A挿入はユーザー/コードによって実行され、正常に機能しています。挿入のトリガーが起動されます。
TABLE_ATRIGGER内にプロシージャSP_1を格納しました。
SP_1いくつかの条件に基づいて、TABLE_AからTABLE_Bにデータを挿入します。
ただし、問題は、ストアドプロシージャ(SP_1)がデータを挿入しているときに、TABLE_Bのトリガーが起動されず、データがそのまま挿入されることです。
では、ストアドプロシージャは起動トリガーを挿入できますか?
擬似コード
ALTER TRIGGER [dbo].[trgtable_AInsert] ON [dbo].[TABLE_A]
Instead of INSERT
AS
BEGIN
SET NOCOUNT ON;
IF exists(SELECT * FROM INSERTED)
BEGIN
MERGE
.......
...........
..............
end
EXEC SP_1 @employee_id
end
ALTER TRIGGER [dbo].[trgtableB_Insert] ON [dbo].[TABLE_B]
Instead of INSERT
AS
BEGIN
SET NOCOUNT ON;
IF exists(SELECT * FROM INSERTED)
BEGIN
MERGE
.......
...........
..............
end
end
ALTER PROCEDURE [dbo].[SP_1] @employeeid int
AS
BEGIN
BEGIN TRANSACTION
insert into TABLE_B
.......
...........
..............
from TABLE_A
where employee_ID is @employeeid
COMMIT TRANSACTION
END