我在SQL Server 2008中有一个到mysql的链接服务器。
我正在寻找一个存储过程来执行以下3个步骤:
在使用链接服务器之前,有一台见证机器和那台机器,这些步骤的编程方式如下:
伪代码:
SELECT values from source
if($row>0)
{
foreach ($row as $rows)
{
INSERT INTO dest (selected value from source)
Delete from source
}
}
以编程方式我做一个循环,我确切地知道插入发生的时间然后我删除了源值,但是如何在存储过程和日常工作中实现这个故障安全?
这是我的插入代码方法,没有删除:
declare @count bigint
select @count = max(id) from dest.table
INSERT INTO dest.table(ID)
SELECT TOP 50000 ID
FROM [sourceLinkedServer].[db].[table]
WHERE ID > @count
答案 0 :(得分:2)
也许这样的事情会起作用:
create table #temp (ID int, value varchar(20))
insert into #temp(ID,value)
select top 50000 value from [sourceLinkedServer].[db].[table]
where ID > (select max(ID) from destTable)
order by ID
insert into destTable (value)
select value from #temp
delete ls
from [sourceLinkedServer].[db].[table] as ls
where exists (select 1 from #temp as t where t.id = ls.ID)
drop table #temp