「First」という名前のテーブルに値を挿入する必要がありますが、値を挿入する前に、次の登録済み「名前」で行がそこに存在するかどうかを確認する必要があります。行の値がそこに存在する場合、その行を削除し、その行に存在する値を「second」という名前の別のテーブルに挿入する必要があります。次に、現在の値を「最初の」テーブルに挿入する必要があります。
SQL Server 2005 を使用しています
「First」という名前のテーブルに値を挿入する必要がありますが、値を挿入する前に、次の登録済み「名前」で行がそこに存在するかどうかを確認する必要があります。行の値がそこに存在する場合、その行を削除し、その行に存在する値を「second」という名前の別のテーブルに挿入する必要があります。次に、現在の値を「最初の」テーブルに挿入する必要があります。
SQL Server 2005 を使用しています
履歴テーブルを作成しようとしているので、これは私には思えます。考えられるすべてのシナリオをカバーしているため、通常はトリガーで実行されます。
これは、最初に挿入または更新するためにJavaから呼び出す可能性のあるストアドプロシージャです。
create proc ReplaceName (@Name varchar(100), @Value1 varchar(100), @Value2 varchar(100))
as
set nocount on
-- try to update Name with new values
update [First]
set Value1 = @Value1,
Value2 = @Value2
where Name = @Name
-- If it does not exist
if @@rowcount = 0
begin
-- Insert new row
insert into [First] (Name, Value1, Value2)
values (@Name, @Value1, @Value2)
end
そして、これは古いコピーを秒単位で保存するトリガーです。
create trigger HistoryFirst on [First]
after insert, update
as
set nocount on
insert into [Second] (Name, Value1, Value2)
select Name, Value1, Value2
from Deleted