有没有办法以每次我的Update stmt检查max(列)值然后+1并更新记录的方式更新。例如。
UPDATE MyTable
SET NEW_KEY = (SELECT MAX(KEY) + 1 FROM MyTable)
WHERE NEW_RECORD = 0;
所以不要只选择max,然后为所有记录设置max + 1。它通过每次查看最大值在迭代中完成。
答案 0 :(得分:1)
这可以在一个声明中完成:
UPDATE (SELECT new_key, new_record,
MAX(key) OVER(ORDER BY key) as minimumKey,
COUNT() OVER(ORDER BY key ROWS UNBOUNDED PRECEDING) + 1 as offsetKey
FROM MyTable) MyTable
SET new_key = minimumKey + offsetKey
WHERE new_record = 0;
(未经测试,因为我没有使用LUW实例)
如果有new_record <> 0
行,则新密钥序列中会有间隙(我个人认为密钥的实际值并不重要,所以不要担心)。