Update トリガーのプログラミングに問題があります。編集した行を新しいデータと新しい ID で新しい行にコピーするトリガーを作成したいと考えています。古い行は、フラグが 0 から 1 に変わるだけで同じである必要があります。
テーブルは次のようになります。
ID Artikelname PREIS UPDATE_DATE FLAG
1 Tomatoe 3 14.06.2012 16:00 0
2 Apple 1,5 12.05.2012 14:45 0
最初の行の価格を変更すると、テーブルは次のようになります。
ID Artikelname PREIS UPDATE_DATE FLAG
1 Tomatoe 3 14.06.2012 16:00 1
2 Apple 1,5 12.05.2012 14:45 0
1 Tomatoe 2 13.07.2012 10:45 0
これまでの私のトリガーは次のとおりです。
USE [TestDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[Produkt_Update]
ON [dbo].[Produkt]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON
DECLARE @ID int
DECLARE @Artikelname nvarchar(50)
DECLARE @Preis numeric
DECLARE @Flag numeric
DECLARE @max_id int
SET @ID = (SELECT ID FROM inserted)
SET @Artikelname = (SELECT Artikelname FROM inserted)
SET @Preis = (SELECT Preis FROM inserted)
SET @Flag = (SELECT Flag FROM inserted)
SET @max_id = (SELECT MAX(ID) from dbo.Produkt)
SET IDENTITY_INSERT dbo.Produkt ON
INSERT INTO dbo.Produkt
(ID,Artikelname,Preis)
values (@max_id+1,@Artikelname,@Preis)
SET IDENTITY_INSERT dbo.Produkt OFF
UPDATE dbo.Produkt
SET Flag = 1
WHERE ID=@ID
END
トリガーを使用して新しい行を作成できますが、最初の行の敷居の価格が変わります。これを処理する方法がわかりません。私を手伝ってくれますか?