INSTEAD OF INSERT 触发器未触发视图 - SQL Server
Posted
技术标签:
【中文标题】INSTEAD OF INSERT 触发器未触发视图 - SQL Server【英文标题】:INSTEAD OF INSERT trigger not firing for views - SQL Server 【发布时间】:2018-01-30 01:34:04 【问题描述】:我有这个触发器用于为每个插入填充另一个表的视图。问题是,它甚至不火。但是,将相同的代码应用于表(并修改 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】:好的...我找到了问题。
此触发器检测何时将行添加到视图(而不是表!),这就是它不起作用的原因 -> 我正在通过将行添加到基表而不是视图来进行测试。
【讨论】:
我想你找到了治疗普通感冒的方法……整天都在寻找这个问题以上是关于INSTEAD OF INSERT 触发器未触发视图 - SQL Server的主要内容,如果未能解决你的问题,请参考以下文章
sql - INSTEAD OF INSERT 触发器 - 插入前清除值
INSTEAD OF INSERT 设置的主键在实体框架中抛出错误(ASP.NET 框架 c#)