只是想知道我是否有任何方法可以限制受 UPDATE 语句影响的行数......我正在考虑使用类似 LIMIT 语句的东西,但在 PERVASIVE 中没有这样的东西,有什么提示吗?
谢谢你
看来这会奏效...
UPDATE TableName SET ColumnName = value WHERE ID IN (SELECT TOP 100 ID FROM TableName WHERE CONDITION)
无论您的“限制”是什么,都可以进入前 100 名。然后,只需适当地更新 WHERE 子句。
这个TOP 100
想法可行,但根据您的数据,它可能会影响测试的正确性或性能。也可能很难写。我认为添加RANDOM
基于 - 的子句效果更好。
UPDATE t SET c = blah
WHERE (/* whatever bunch of stuff */)
AND Random()<0.01 /* 1 percent */
如果您的数据库的 random 给出一个介于 0 和 1 之间的值,并且可以针对不同的随机函数和密度进行修改,则此方法有效。
如果您只是小心点,为什么不只计算要更新的行数呢?
select count(*) from MYTABLE WHERE ...some condition...;
如果计数足够低,这实际上是剪切并粘贴到更新中:
update MYTABLE set col1 = val1, ... WHERE ...some condition...;
适当地放入您的脚本语言、pl/sql 或存储过程。