2012-04-11 34 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