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

它不起作用。我在第二个中找不到错误

4

2 回答 2

1

好像您缺少选择 InvLogicalRef 的来源。它应该是

select @InvLogicalRef = inserted.FICHEREF from inserted

同样使用此触发器,您假设一次只会更新一条记录。批量更新将失败。

于 2013-10-02T09:39:48.307 回答
0

将值分配给 @InvLogicalRef 的行不完整。由于该变量不包含值,因此无法为 @InvNumber 分配其值,因此您尝试将 NULL 字符串插入 CRMINVPAYMENT。

确保从插入的表中选择 @InvLogicalRef 的值。

于 2013-10-02T09:48:43.270 回答