我需要在 sybase 中进行大量更新。
表 1 有 a、b、c、e、f 列,大约 900 万条记录。表 2 有 a、e、f 列,大约 500000 条记录。
由于系统日志已满,波纹管更新 sql 失败
update table1
set e = table2.e, f = table2.f
from table1, table2
where table1.a = table2.a
在互联网上进行研究后,由于同样的错误,以下两个程序仍然失败,但它们确实成功更新了 5000 条记录。
有任何想法吗。谢谢!
SET ROWCOUNT 5000
WHILE (1=1)
BEGIN
update table1
set e = table2.e, f = table2.f
from table1, table2
where table1.a = table2.a
IF @@ROWCOUNT != 5000
BREAK
END
SET ROWCOUNT 0
declare @errorStatus int, @rowsProcessed int
set rowcount 5000
select @rowsProcessed = 1
while (@rowsProcessed != 0)
begin
begin tran
update table1
set e = table2.e, f = table2.f
from table1, table2
where table1.a = table2.a
select @rowsProcessed = @@rowcount, @errorStatus = @@error
if (@errorStatus != 0)
begin
--raiserror ....
rollback tran
--return -1
end
commit tran
end
set rowcount 0