sql取消查询而不会将所有东西都还原
问题描述:
我一直在用SQL服务器运行许多'insert into'语句,有时候还会循环运行。sql取消查询而不会将所有东西都还原
While
begin
insert into
end
通常需要很长时间才能完成。有时我必须在完成之前取消查询。当我这样做时,它将恢复它插入的所有内容。有没有办法,我只取消'插入'它现在正在运行,并保持已经插入在前一个循环?
非常感谢。
答
您只需明确定义从哪里开始和结束交易,那么它应该只有当它通过取消一半回滚“当前”的交易:
While
begin
BEGIN TRANSACTION;
insert into
COMMIT TRANSACTION;
end
确保您了解这方面的影响在应用数据之前保证数据的完整性。例如。每次开始批次时,都要检查你上次的时间。
无论您在交易中做什么,请记住,您现在必须自己检查数据完整性。否则,如果多次启动该批次,则由于多行插入同一行,您的数据可能会损坏。 – Adwaenyth
给答案增加了一个警告,显然完全取决于'insert'实际做了什么。它有多远可能是不言而喻的,也可能是一团糟! – JeffUK
非常感谢。我在插入之前为目标表创建了唯一的索引。所以重复不会发生。 – davidzxc574