SQL Server 2008
我已经定义了触发器
TABLE_A 用于“INSTEAD OF INSERT”,TABLE_B 用于“INSTEAD OF INSERT”。
两个触发器都与插入的表执行合并。
TABLE_A 插入由用户/代码完成并且运行良好,触发插入的触发器。
我在 TABLE_A TRIGGER 中有存储过程 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