我有一个包含一些数据的 Temp_Table 。根据 Temp_Table 中的数据,我将从其他表中删除相关行,然后将 Temp-table 中的所有数据插入到 table1 中。就像下面的例子一样。
我可以以什么方式在 Server2.Table 1 上放置一个锁(我想是唯一的)并在释放该锁之前运行删除和插入语句?我不希望任何人在我执行删除/插入操作时读取或写入 Table1。请注意,必须运行删除before插入语句。
SSIS 有办法做到这一点吗?或者我可以在开始时使用Begin transaction并在语句之后使用commit transaction吗?我担心删除和插入将在同一事务中同时运行。
DELETE Table1
FROM Table1 t1
INNER JOIN (
SELECT Column2 FROM Temp_Table
GROUP BY Column2
) t2 ON t1.Column2 = t2.Column2
INSERT INTO Table1
SELECT (Column1, Column2...)
FROM Temp_Table
您可以在删除中使用 OUTPUT 子句插入临时表
DELETE FROM dbo.table1
OUTPUT DELETED.* INTO @MyTable --or temp table
WHERE id = 10
在这种情况下,两个操作都将在单个事务中进行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)