0

我想用应用程序中的新数据表替换我的 sql server 数据库中的表“Met”。我的基本想法是循环新表中的每一行并比较现有表。

我使用了一个存储过程,但它只有“插入”和“更新”功能。我需要先删除旧表吗?

谢谢

对于每一行,我想循环以下存储过程。

;WITH CTE AS (SELECT skey=@skey,ProbMetID=@ProbMetID,Interval=@Interval,Counts=@Counts)
MERGE Met AS TARGET
USING CTE SOURCE
ON SOURCE.skey = TARGET.skey
WHEN MATCHED THEN
UPDATE
SET ProbMetID = SOURCE.ProbMetID,
    Interval = SOURCE.Interval,
    Counts = SOURCE.Counts,
    WHERE skey = @skey
WHEN NOT MATCHED THEN    
INSERT INTO Met(skey,ProbMetID,Interval,Counts)
VALUES(@skey,@ProbMetID,@Interval,@Counts); 
4

1 回答 1

1

MERGE 语句确实包含一个 DELETE 函数。查看 Pinal Dave 的帖子:http: //blog.sqlauthority.com/2008/08/28/sql-server-2008-introduction-to-merge-statement-one-statement-for-insert-update-delete/

我发现从应用层执行此操作的最简单方法是将所有内容插入临时表,然后在临时表和实际表之间执行整个 MERGE 操作。最重要的是,您可以在一次事务中完成整个事情。另外,您可以将应用程序表批量插入到临时表中,以获得超棒的数据库速度 (TM)。

于 2012-06-20T20:52:31.653 回答