设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1493|回复: 2
打印 上一主题 下一主题

identity的新現像[讨论]

[复制链接]
跳转到指定楼层
1#
发表于 2002-6-20 21:43:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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编辑过]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2002-6-20 23:04:00 | 只看该作者
identity,primary key,unique列我之見
相同點它們都是獨一無二的,不可重復的。
不同:identity是基于一個基量按一個指定的增強來不斷生成,且永遠不會為空值。
    primary也是不可重復的,可以是各種類型數據(text,image,binary除外),不可為空值。
    unique同primary,但它是可以為空值的。
由以上三點相比,可以發現unique的新用途。
比如說,您有一張定單,一張定單可以分為多個定單項,而一個定單項可以有也可以沒有客戶要求。哪么您可以建立三張表,定單表,定單項,定單項擴展(可以是客戶附加要求)。
他們之間的關系是定單和定單項可以通過主鍵和強制建相關連,
而定單項和定單項擴展則可以用unique列來連系。為什么哪?
大家請想一想?



[此贴子已经被HG于2002-6-20 15:04:11编辑过]

3#
 楼主| 发表于 2002-6-21 17:57:00 | 只看该作者
各位高手,還沒有對identity列有新認知的,指些指點。
比如identity列在實際中的運用,技巧等,大家互相幫助,共同進步。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-18 14:18 , Processed in 0.528306 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表