INSERT INTO TABLE1 (COLUMN1, PRIMARY_KEY)
SELECT
COLUMN1,
(SELECT COALESCE(MAX(PRIMARY_KEY), 0)
FROM TABLE1) + 1
FROM
TABLE2
error:
违反主键约束。无法在对象中插入重复的键。
如何使主键在第一行之后递增?
我希望能够同时向该表添加项目列表,而不是将它们插入 RBAR。
谢谢您的帮助
INSERT INTO TABLE1 (COLUMN1, PRIMARY_KEY)
SELECT COLUMN1,
(SELECT COALESCE(MAX(PRIMARY_KEY),0)
FROM TABLE1) + row_number() over (order by 1/0)
FROM TABLE 2
仅对于此语句,ID 将是连续的,例如如果Max(Primary Key)
是 99 并且插入 4 条记录,它们将是 100, 101, 102, 103。如果多个进程同时插入,则很容易违反约束,但这并不是说它比您所拥有的更糟糕无论如何使用一条记录MAX()
这本质上是不安全的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)