0

我在 SQL Server 2008 中有一个链接到 mysql 的服务器。

我正在寻找一个存储过程来执行这 3 个步骤:

  1. 从mysql中选择
  2. 将选定的值插入 SQL Server
  3. 从mysql中删除选定的值

在使用链接服务器之前,有一台见证机器,该机器以编程方式执行这些步骤,如下所示:

伪代码:

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
4

1 回答 1

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
于 2014-01-15T08:15:48.243 回答