我有一个视图的触发器,该视图为每个插入填充另一个表。问题是,它甚至不开火。但是,当将相同的代码应用于表(并修改 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
好的...我发现了问题。
这会触发检测何时将行添加到视图(而不是添加到表中!(,所以这就是它不起作用的原因 ->我正在通过将行添加到基表而不是视图来进行测试。