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'帶回來。 –