我必须在名为“First”的表中插入值,但在插入值之前,我必须检查该行是否存在与以下注册“名称”。如果那里存在行值,那么我必须删除该行并将该行中存在的值插入到名为“second”的不同表中。然后,我必须将我的现值插入“第一”表。
我正在使用 SQL Server 2005
我必须在名为“First”的表中插入值,但在插入值之前,我必须检查该行是否存在与以下注册“名称”。如果那里存在行值,那么我必须删除该行并将该行中存在的值插入到名为“second”的不同表中。然后,我必须将我的现值插入“第一”表。
我正在使用 SQL Server 2005
在我看来,当您尝试创建历史记录表时。它通常在触发器中完成,因为它涵盖了所有可能的场景。
这是一个存储过程,您可能会从 java 调用以插入或更新 First:
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