簡體   English   中英

SQL查詢在鏈接服務器上運行3步(Select-Insert-delete)

[英]SQL query to run 3 step (Select-Insert-delete) on linked server

我在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

也許這樣的事情可以完成這項工作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM