wee*_*ewa 4 sql insert primary-key sql-server-2008
INSERT INTO TABLE1 (COLUMN1, PRIMARY_KEY)
SELECT
COLUMN1,
(SELECT COALESCE(MAX(PRIMARY_KEY), 0)
FROM TABLE1) + 1
FROM
TABLE2
Run Code Online (Sandbox Code Playgroud)
错误:
违反主键约束.无法在对象中插入重复键.
如何在第一行之后使主键增加?
我希望能够同时向该表添加项目列表,而不是将它们插入RBAR.
谢谢您的帮助
Ric*_*iwi 12
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
Run Code Online (Sandbox Code Playgroud)
仅对于这个语句,ID将是顺序的,例如,如果Max(Primary Key)是99并且它正在插入4个记录,它们将是100,101,102,103.如果同时插入多个进程,则非常容易发生约束违规,但是这并不是说它比你使用的单一记录更糟糕MAX(),这本身就是不安全的.