2013-10-22 126 views
0

上運行3步(選擇,插入,刪除),我有一個鏈接的服務器到MySQL在SQL Server 2008中SQL查詢到鏈接服務器

我正在尋找一個存儲過程來完成這3個步驟:

  1. 從MySQL
  2. 選擇
  3. 插入選定值到SQL Server
  4. 從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 

回答

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