1
我目前使用SQL Server:对于一个新加入的行选择主键数
SELECT MAX(CustomerID)...
选择CustomerID
,这是表的主键,一个新添加的行数,因为我需要将此号码用于另一个将其用作外键的表。通过INSERT
添加一行,并且依次执行一个SELECT
查询。
在SQL Server Management Studio的列属性下,我看到Identity Increment
设置为1
。有没有不安全的理由使用MAX(CustomerID)
来获得我所需要的?该过程的代码将始终是“单行INSERT和一个SELECT查询”。如果有更好的方法,那会是什么?也许,沿着这条线的某个地方,“让我加入新增行的CustomerID
”?
您对此非常感兴趣,并且非常感谢您的示例!我测试了SECOPE_IDENTITY,它效果很好。关于何时失败,在我描述的程序性问题下,我是否会遇到“空表”问题?另外,你提到的“并发条件”是指并发数据库连接? – musicliftsme
@ user796837 - 表中没有行时,'MAX(CustomerID)'将为'NULL'。显然只适用于在插入之前进行检查的情况,并且很容易用'ISNULL'解决。主要问题是并发数据库连接。由于不能保证另一行不会被另一个连接插入,因此在执行'insert'和检查'MAX'时,在这种情况下,您会将错误行的'id'带回来。 –