1
当在这个特定视图中插入数据时,我有一个从其他视图获取数据的视图,如下面的示例所示,需要在表vendas ref(nvarchar(50))和Estado(bool) 。视图上的Sql触发器没有被触发
ALTER TRIGGER [dbo].[TGR_VENDAS]
ON [dbo].[VendasFinal]
INSTEAD OF INSERT
AS
BEGIN
DECLARE
@Ref nvarchar(50),
@EstadoString nvarchar(50)
SELECT @Ref = i.ref, @EstadoString = i.ESTADO
FROM inserted i
if(@EstadoString = 'Em Aberto')
BEGIN
INSERT INTO dbo.Vendas
(ref, Estado)
VALUES
(@Ref ,0);
END
ELSE
BEGIN
INSERT INTO dbo.Vendas
(ref, Estado)
VALUES
(@Ref ,1);
END
END
它运行在MS Sql Server 11.0上。 在此先感谢。
触发器每个*语句*触发一次,而不是每个*行*触发一次。 'inserted'可以包含0,1或*多个*行。这是触发器的第一个明显问题。但是,您尚未说明您是否遇到错误,或者您还没有确定触发器“未触发”,因此难以提供进一步的帮助。 –
每声明是什么意思?我只是编辑问题。 –
这意味着'插入的'表格包含** all **插入的行。这在当时不是一排。 –