我在使用SQL Server。 我有一个包含PK int列的表。 该列没有启用自动增量,并且不允许我更改架构。 我需要手动插入大量行(可能达到数千行)到这个表中。 所有插入的数据都不来自任何现有的表。 然而,我需要确保每一行PK列都会递增+1。 我当前的脚本如下:
BEGIN TRAN
INSERT INTO DB1.dbo.table1
(PK_col, col1)
VALUES
(10, 'a')
,(11, 'something')
,(12, 'more text')
;
我已经通过预查询(SELECT MAX(PK_col) + 1
)知道PK_col当前为9。
我的问题是确保每个新行的PK列增加+1。因为可能要插入数千行,我想减少跳过值或抛出PK约束违规的可能性。我知道我可以在DB之外(通过Excel)实现这一点,只要在运行SQL脚本之前验证PK值即可。但是,我想创建一个处理TRAN语句本身自动递增的解决方案。这可能吗(不会遇到竞争条件)?如果可以,如何实现?