2012-04-11 59 views
0

我必須在名爲「第一」的表中插入值,但在插入值之前,我必須檢查該行是否存在,是否存在以下注冊的「名稱」。如果行值存在那裏,那麼我必須刪除該行並將該行中存在的值插入到名爲「second」的不同表中。然後,我必須將我的當前值插入到「第一個」表格中。檢查現有表插入一列,值是否存在或不存在?

我使用SQL Server 2005

+0

我可以做到這一點Java代碼,這將是漫長的。所以,我正在尋找一個有用的查詢 – ravi 2012-04-11 08:16:59

+0

您使用的是哪個數據庫?編輯你的問題,把它的名字,人們將能夠幫助。 – GrandMasterFlush 2012-04-11 08:19:31

+0

試過了什麼? – Virus 2012-04-11 08:23:54

回答

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