0
Нужна помощь с триггером.
Если я удалю свои внутренние соединения из того места, где он работает, поэтому я предполагаю, что это будет проблема. Если я использую это там, где он работает, «WHERE oeordhdr_sql.A4GLIdentity = @ id»Неисправность при запуске SQL
Любая помощь будет оценена. Ниже приведен код ...
ALTER trigger [dbo].[bdordermakeonhold]
on [dbo].[oeordhdr_sql]
for insert
as
declare @edi as char(1)
declare @id as numeric(9,0)
declare @ordno as char(8)
declare @ordtype as char(1)
declare @cus_no as char(12)
declare @status as char(1)
declare @ship_to_addr_3 as char(40)
set @edi=(select edi_fg from inserted)
set @id=(select a4glidentity from inserted)
set @ordno=(select ord_no from inserted)
set @ordtype=(select ord_type from inserted)
set @cus_no=(select cus_no from inserted)
set @status=(select status from inserted)
set @ship_to_addr_3=(select status from inserted)
set nocount on
if @edi is null or @edi='E'
if not exists (SELECT ID, Cus_No, State, CertificateID, Expiration FROM BDSalesTaxCerts
WHERE State = 'FL' AND @cus_no = Cus_No)
begin
UPDATE oeordhdr_sql
SET status = 'C',hold_fg = 'H'
FROM inserted AS i INNER JOIN
oeordlin_sql AS LN ON LN.ord_no = i.ord_no INNER JOIN
ARCUSFIL_SQL as CS ON i.cus_no = CS.cus_no
WHERE oeordhdr_sql.A4GLIdentity [email protected] and cs.state not in ('FL','PR',' ','lima') and
(LN.loc = 'SE') AND (@ship_to_addr_3 LIKE '%FL%') AND @status in ('1')
if not exists (select ID from BDInvoiceSupport where [email protected] and orig_ord_type
[email protected])
begin
INSERT INTO [dbo].[BDInvoiceSupport]
([ID]
,[LastUpdate]
,[RecordRevLevel]
,[Inv_No]
,[TaxProcessingStatus]
,[Orig_Ord_no]
,[orig_ord_type]
,[InvoiceSent]
,[OnHoldReason])
select NEWID(),GETDATE(),0,inv_no,0,ord_no,ord_type,0,'Not checked yet.'
from inserted
end
end
Я думаю, вам нужна точка с запятой между операторами UPDATE и 'IF'. – Barmar
Вы получаете сообщение об ошибке при попытке скомпилировать триггер или ошибку при запуске триггера. Какую ошибку вы получаете? – Spock
Триггеры предназначены для работы со всеми затронутыми записями одновременно. Если несколько записей будут изменены, то вставленная таблица будет содержать более одной записи. В этом случае переменные сохраняют только одно значение, а вставленная таблица имеет много значений и может быть причиной ошибки или сбоя. Я бы рекомендовал не сохранять значения из вставленной таблицы в переменные, а скорее обрабатывать в определенном множестве. – Jeremy