SQL查询在链接服务器上运行3步(Select-Insert-delete)

时间:2013-10-22 08:28:43

标签: sql sql-server

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

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

  1. 从mysql中选择
  2. 将所选值插入SQL Server
  3. 从mysql中删除所选值
  4. 在使用链接服务器之前,有一台见证机器和那台机器,这些步骤的编程方式如下:

    伪代码:

    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
    

1 个答案:

答案 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