INSTEAD OF INSERT触发器不会为视图触发 - SQL Server

时间:2018-01-30 01:34:04

标签: sql sql-server view triggers

我有一个视图的触发器,为每个插入填充另一个表。问题是,它甚至没有发射。但是,将相同的代码应用于表(并修改INSTEAD OF)时,它的效果非常好。

视图为vw_alumnos,并从表Alumnos中获取数据。

出于测试目的,我将行添加到Alumnos,并且它们在视图中正确显示。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[trgAfterInsert_pupils] 
ON [dbo].[vw_Alumnos]   
INSTEAD OF INSERT  
AS    
BEGIN
    IF @@ROWCOUNT = 0
        RETURN

    SET NOCOUNT ON

    declare @table_name varchar(50);  
    declare @id_row varchar(50); 
    declare @change_type varchar(100);  

    set @table_name='vw_Alumnos';  
    set @change_type='addedit';  

    insert into historial_cambios (table_name, id_row, change_type)
        select @table_name, i.EMAIL, @change_type 
        from inserted i
END

1 个答案:

答案 0 :(得分:1)

好的......我发现了问题。

此触发器检测何时将行添加到视图(而不是表格!),这就是为什么它不起作用 - >我正在通过向BASE TABLE而不是VIEW添加行来进行测试。