2012-04-11 8 views
0

"First"という名前のテーブルに値を挿入する必要がありますが、値を挿入する前に、その行が存在するかどうかを次のRegistered "name"で確認する必要があります。行の値が存在する場合は、その行を削除して、その行にある値を別のテーブル「second」に挿入する必要があります。次に、私は現在の値を "最初の"テーブルに挿入する必要があります。あなたが履歴テーブルを作成しようとしているよう既存のテーブルをチェックして列を挿入すると、値はそこに存在するかどうか?

は、私はSQL Server 2005の

+0

私がそれを行うことができますJavaコード、これは長いでしょう。だから、私は助けになるだろうクエリを探しています – ravi

+0

あなたはどのデータベースを使用していますか?あなたの質問を編集してその名前を入れると、人々はそれを手伝うことができます。 – GrandMasterFlush

+0

試しましたか? – Virus

答えて

0

を使用していますこれは私には思えます。すべての可能なシナリオを網羅しているため、通常はトリガーで実行されます。ここで

を使用すると、挿入または最初に更新するために、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 
関連する問題