我有一個複合鍵,ID(int,autogenerated)和TaxpayerID(varchar,用戶輸入它)的SQL表。當用戶註冊時,他們輸入一個納稅人ID &納稅人ID與ID結合成主鍵。有沒有辦法只返回複合主鍵的一部分?
通常在輸入記錄後,我會返回使用的@@ Identity並將其返回到.NET應用程序中的Integer變量。然而,這似乎是失敗的,我認爲這是一個複合關鍵。
有沒有辦法只返回複合主鍵的一部分? (在這種情況下,只是ID字段)
我有一個複合鍵,ID(int,autogenerated)和TaxpayerID(varchar,用戶輸入它)的SQL表。當用戶註冊時,他們輸入一個納稅人ID &納稅人ID與ID結合成主鍵。有沒有辦法只返回複合主鍵的一部分?
通常在輸入記錄後,我會返回使用的@@ Identity並將其返回到.NET應用程序中的Integer變量。然而,這似乎是失敗的,我認爲這是一個複合關鍵。
有沒有辦法只返回複合主鍵的一部分? (在這種情況下,只是ID字段)
建議返回SCOPE_IDENTITY()
。這將返回您範圍內創建的最後一個IDENTITY
值。我建議更喜歡SCOPE_IDENTITY()
,因爲
SCOPE_IDENTITY和@@ IDENTITY返回當前會話中任何表中生成的最後一個標識值。但是,SCOPE_IDENTITY返回僅在當前範圍內插入的值; @@ IDENTITY不限於特定範圍。
在你的情況,這是一個有點用化合物糊塗,但如果你正在尋找的自動遞增的IDENTITY
場,這會爲你做它。桌上的PK並不重要。如果有一個標有IDENTITY
的字段,並且您希望將其返回,請在INSERT
後立即使用SCOPE_IDENTITY()
。
他們是2個不同的列。 ID是一個int,TaxpayerID是一個varchar。 DBA將它們設置爲組合鍵。但是我只需要插入記錄後返回的一個(ID)。 – donde 2010-10-06 17:26:32
你怎麼知道「這似乎是失敗的」?你看到什麼表明有問題? – bobs 2010-10-06 17:27:17
當我在查詢分析器中運行它似乎確實返回ID。但是,當它回到.NET時,它在轉換爲整型變量時失敗。我檢查了4次,以確保我的變量是int,並且此列是int。 – donde 2010-10-06 17:35:17