2015-12-28 40 views
0

我的理解是
CREATE TABLE T(ID IDENTITY PRIMARY KEY);

CREATE TABLE T(ID BIGINT IDENTITY);
之間的唯一區別是,後者是更有效的,因爲ID列是行ID,因此對應的_ROWID_僞柱。IDENTITY VS BIGINT關於_ROWID_

而且,如果我做
CREATE TABLE T(ID IDENTITY);
然後ID不符合_ROWID_,它甚至不是一個主鍵在所有。

這些假設是否正確?

+0

我懷疑沒有。使用第二種方法創建一個表格。添加兩條記錄,然後刪除第一條記錄。選擇ID字段和_rowid_值,看看它們是否仍然相同。接下來,創建另一個表,其中包含對第一個表的外鍵引用。看看數據庫是否允許你這樣做。 –

回答

0

建議我做了一些測試。事實證明,所有這三個陳述似乎是相同的。
ID始終是主鍵,對應於_ROWID_列。

畢竟,我去的第四變型:
CREATE TABLE T(ID BIGINT AUTO_INCREMENT, CONSTRAINT KEY_NAME PRIMARY KEY (ID));
這樣做可以指定主鍵的名字的優勢。
在其他情況下,名稱是自動生成的,沿着CONSTRAINT_0的行。
所有與H2 1.4.190。