0

このコードを使用すると、行が挿入されます

create trigger [dbo].[InsertInvPayment] on dbo.LG_001_01_PAYTRANS
after update
as
begin
  SET NOCOUNT ON;
   declare @InvLogicalRef int;
   declare @InvNumber varchar(50);
   select @InvLogicalRef = inserted.FICHEREF from inserted
   select @InvNumber = dbo.LG_001_01_INVOICE.DOCODE from dbo.LG_001_01_INVOICE where      dbo.LG_001_01_INVOICE.LOGICALREF = @InvLogicalRef
   insert into dbo.CRMINVPAYMENT(INVNUMBER) values('Hello')
  end

このように変更すると

create trigger [dbo].[InsertInvPayment] on dbo.LG_001_01_PAYTRANS
after update
as
begin
  SET NOCOUNT ON;
   declare @InvLogicalRef int;
   declare @InvNumber varchar(50);
   select @InvLogicalRef = inserted.FICHEREF from inserted
   select @InvNumber = dbo.LG_001_01_INVOICE.DOCODE from dbo.LG_001_01_INVOICE where      dbo.LG_001_01_INVOICE.LOGICALREF = @InvLogicalRef
   insert into dbo.CRMINVPAYMENT(INVNUMBER) values(@InvNumber)
  end

うまくいきません。私は2番目に間違いを見つけることができませんでした

4

2 に答える 2

1

Select InvLogicalRef のソースが見つからないようです。そのはず

select @InvLogicalRef = inserted.FICHEREF from inserted

また、このトリガーでは、一度に 1 つのレコードのみが更新されると想定しています。これは、一括更新では失敗します。

于 2013-10-02T09:39:48.307 に答える
0

@InvLogicalRef に値を割り当てる行は不完全です。その変数には値が含まれていないため、@InvNumber にその値を割り当てることができないため、CRMINVPAYMENT に NULL 文字列を挿入しようとしています。

挿入されたテーブルから @InvLogicalRef の値を選択してください。

于 2013-10-02T09:48:43.270 に答える