2009-05-21 64 views
0

我們可以在表格中指定2個標識列。如果沒有,爲什麼?如果是,爲什麼我們可以在表中有多個標識列嗎?

+0

看到這個問題http://stackoverflow.com/questions/350950 – 2009-05-21 05:01:38

+0

關於從水能撈到喬納森水能撈到的問題 - 那不過只是鬆散的關係。 – 2009-05-21 05:49:37

回答

1

「標識列」不是SQL概念。你必須記住一些具體的實現,它有自己的怪癖和擴展,而不是一般的SQL,因爲你的標籤聲明;請編輯並重新標記您的問題。 (如果你碰巧指的是「Microsoft SQL Server」,答案是「不」,因爲微軟認爲它沒有任何意義[而且曾經他們是正確的! - ]])。

1

取決於你的意思是「身份」

有諸如「ROWID」,「OID」等,其目的是使用由DBMS生成的值uniquly標識一行幾個具體的實施結構 - 在大多數dbms系統中每行只有一個這樣的行。

一排的「身份」也可能意味着主鍵。 ANSI sql支持由多個列組成的主鍵,在大多數DBMS中,您可以在主鍵中包含任何或所有合適的列。身份然後由主鍵中所有列的組合組成 - 但這在邏輯上是一個很大的但仍然構成一個單一的身份。

您可以指定一個「獨一無二」的約束***縣***任何或所有適合的列,每列constaint可以被認爲是一個「身份」本身就是這樣回答你的問題可能是「是」 - 但我從來沒有見過這樣的真實生活實現。

0

其他人們對「身份」不是SQL標準型點是正確的。

的IBM的Informix動態服務器(IDS)支持類型SERIAL,SERIAL8和BIGSERIAL。這些是具有額外屬性的整數類型,如果您向其中插入零(或者如果您未指定要插入的值),則應用下一個較高的先前未使用的值。這與其他DBMS稱爲標識列的內容大致對應。 (IDS還提供了序列。)

一個好奇(怪癖)是,您可以同時在一個表中同時擁有SERIAL列和SERIAL8或BIGSERIAL列。這樣做不被推薦,也不明智;但是,這並不是禁止的。

大多數DBMS不允許在一個表中的兩個獨立的「身份」列。

相關問題