identity的使用一直是個有爭議的問題。
一般來說在人們找不到合適的主鍵時,便用identity來作一個慮擬主鍵。
indenity現然經常出現的問題是,當你在delete一記錄時,中間便會有中斷,
如1,2,3,4,5 刪除3 ,則現在為1,2,4,5。
哪么一般人們常會問到我如何才能如上述在刪除一記錄后,1,2,4,5重變為1,2,3,4哪?
T_SQL有如下函數可用.
ident_current('table_name')返回任何會話指定表的最后標識值
ident_incr('trable_or_view')返回指定表或視圖的標識列過程中所產生的增量值
ident_seed('trable_or_view')返回指定表或視圖的標識列過程中所指定的基數值
identity(date_type,seed,increment) as column_name
僅用在into table子句的select語句中,以便把標識列插入新表。
----------------------------------------------------------------------
結合以上函數可以靈活處理identity。
不知大家有沒有發現這樣的現象.
如果你在一個具有identity列的表中,插入新記錄時,由于在此表有外鍵約束,某些情況下
插入失敗,但您會發現,在下一次插入成功時,已是產生了一個新的identity。
如1,2,3,4 現在插入新記錄->失改,然后現次插入成功,則identity為1,2,3,4,6
有無朋友可以解釋一下這個怪現象,和好的處理辦法。
------------------HG原創,轉貼請先通知[em06][em06]
[em04][em04]
[此贴子已经被HG于2002-6-20 13:43:13编辑过]
|