我有一个视图,当数据插入此特定视图时从其他视图获取数据,因为show bellow需要插入表vendas ref(nvarchar(50))和Estado(bool)。
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上运行。 提前谢谢。
答案 0 :(得分:1)
你不需要光标。您只需要使用案例表达式。您发布的触发器可以简化为此。它处理任意数量的行以及现有代码中的逻辑。
ALTER TRIGGER [dbo].[TGR_VENDAS]
ON [dbo].[VendasFinal]
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO dbo.Vendas
(
ref
, Estado
)
SELECT i.ref
, case when i.ESTADO = 'Em Aberto' then 0 else 1 end
from inserted i