Я создал триггер для вставки данных в таблицу путем проверки поля состояния из другой таблицы.
CREATE trigger [dbo].[insercionVentasConcluidadas]
on [dbo].[pedido]
after update
as
declare @fechaactual date
declare @estado varchar
begin
if UPDATE(estado)
begin
select @estado = estado from inserted;
set @fechaactual = GETDATE();
if (@estado = 'cerrado')
print N'RAS'
begin
insert into ventaConcluida(numeroPedido, nombreCliente, nombreProveedor, fechaCreacion, fechaCierre, diasTranscurridos, MontoPedido)
select d.idPedido, d.nombreCliente, d.nombreProveedor, d.fechaPedido, @fechaactual, dbo.calculoDias(d.fechaPedido, @fechaactual),
d.montoPedido
from inserted i
inner join deleted d
on i.idPedido = d.idPedido
end
end
end
Что должен сделать триггер, это вставить данные в таблицу, когда переменная @estado
равна cerrado
после обновления другой таблицы с именем pedido
, когда статус в этой таблице = cerrado
, и он устанавливает значение с select @estado = estado from inserted;
, где допустимые значения только cerrado, creado and parcial
, но фактически он вставляется в любой из этих состояний , поэтому я думаю, что проблема может быть в установке переменной или проверке значения if (@estado = 'cerrado')
. Другая проблема заключается в том, что он вставляет данные только с добавлением строки print N'RAS'
, а когда запускается триггер, он вставляет данные, но не печатает строку.