0
SQLテーブルに新しい行を挿入した後に値を更新/挿入しようとしています。私はこれを達成するためにトリガを使用していますが、私はそれが意味することを理解するエラーが発生しますが、私はそれを修正する方法を知らない。私は、宣言された@idに基づいて挿入されたテーブルから挿入された行を得ることができたという印象の下にあったが、その部分はうまくいくようだが、なぜ私は "私はそれがPKだと知っていますが、私はこのフィールドに何も入力することはありません(それは既にインサート自体から正しいデータで満たされています)。挿入エラー後のSQ1トリガー
だから誰も私が間違ったことを説明できますか?
私が使用テーブル:
テーブルdelivery_invoice
id - int
invoicenumber(PK) - varchar(50)
amount6 - money
amount21 - money
distributor - int
payed - char(3)
deliverycosts - money
deliverydate - datetime
deliverytime - datetime
VATamount6 - calculated field
VATamount21 - calculated field
VATamountdelivery - int
私は
USE TestDelivery
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: James
-- Create date: 11-08-2017
-- Description: change VATamountdelivery field after a new row is inserted
-- =============================================
CREATE TRIGGER trgVATAmountDelivery
ON dbo.delivery_invoice
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Declare @id int
Declare @amount money
Declare @invoice varchar(50)
Select @id = id from inserted
Select @amount = VATamount21 from inserted
IF @amount > 0
insert into dbo.delivery_invoice(VATamountdelivery)
values(21)
else
insert into dbo.delivery_invoice(VATamountdelivery)
values(6)
END
GO
そして最後にではなく、少なくとも私が得たエラー使用トリガー:
Error. Cannot insert the value NULL into column 'invoicenumber', table
'TestDelivery delivery_invoice'; column does not allow nulls. INSERT fails.
The statement has been terminated.
任意の助けがにappriciatedされるだろうが! J.
ありがとう、ちょうどコードをテストし、それは完全に動作します。私は、挿入テーブルが複数の行を保持できることに気づいていませんでしたが、この場合、挿入があるたびに1つの行しか存在しないので、うまくいくはずです。解決策とインサートテーブルの洞察をありがとう – JamesW