Допустим, у нас есть таблица, в которой объединено множество уникальных кодов. Например: Номер счета:
- XOUT12345
- SOUT12345 et c.
Я хотел создать триггер, который гарантирует только те, у которых есть значение «XOUT%» используется в триггере и вставляется в другую таблицу. Это особенно похоже на работу (я думаю), однако, когда я создаю документ, в котором используется формат B, я получаю сообщение об ошибке при сохранении документа.
Таблицы выглядят следующим образом:
- 1 таблица с именем ICSTOCKBILL, в которой все входящие и исходящие доставки сохраняются в этой одной таблице с использованием форматов, описанных выше. .
- Один столбец = FBillNo, в котором зарегистрированы номера счетов.
- Один столбец = FStatus, где статус утверждения обновляется до 1, если это так.
1 Таблица с именем 3026, куда должны автоматически передаваться номера накладных из ICSTOCKBILL (FBillNo).
Мой код выглядит следующим образом :
create Trigger DVLP_T_InsertBillNoItemSALESDEL2 On ICStockBill
for UpDate
as
If UpDate(FStatus)
Begin
If not exists (Select 1
From inserted a
Inner Join t_Item b on b.FItemClassID=3026 AND b.FNumber=a.FBillNo where FBillNo like 'XOUT%')
Begin
INSERT INTO t_Item (FItemClassID,FParentID,FLevel,FName,FNumber,FShortNumber,FFullNumber,FFullName,FDetail,FDeleted)
Select 3026,0,1,FBillNo,FBillNo,FBillNo,FBillNo,FBillNo,1,0
From inserted where FBillNo like 'XOUT%'
End
End
Итак, конечная цель: все утвержденные документы (FStatus = updated) должны пройти через курок. Но ТОЛЬКО те, которые имеют формат XOUT, должны быть вставлены в таблицу 3026.
Пока что после того, как я применил этот триггер, он работает. Создаю новую коммерческую поставку, ее еще нет в новой таблице. Я одобряю это, и оно есть.
Однако другие документы, которые не имеют указанного формата, получают ошибку:
UPDATE ICSTOCKBILL SET FORDERAFFIRM = 0 WHERE FBILLNO = SEOUT1234 нарушение UNIQUE KEY contraint 'item2;.
Любые подсказки приветствуются.