我見過很多CREATE TABLE語句的例子,用於使用NOT NULL,UNIQUE,IDENTITY,AUTO_INCREMENT等聲明主鍵,但我是不確定使用自動增量主鍵列(int類型)設置表的最低要求是什麼。SQL Server中自動增量,唯一,不爲空主鍵的最低要求
所以我想這是我的問題:
什麼是設置一個主鍵,其自動遞增,是獨一無二的,並且不允許空值的最低要求?
我見過很多CREATE TABLE語句的例子,用於使用NOT NULL,UNIQUE,IDENTITY,AUTO_INCREMENT等聲明主鍵,但我是不確定使用自動增量主鍵列(int類型)設置表的最低要求是什麼。SQL Server中自動增量,唯一,不爲空主鍵的最低要求
所以我想這是我的問題:
什麼是設置一個主鍵,其自動遞增,是獨一無二的,並且不允許空值的最低要求?
主鍵在定義上是唯一的。身份默認爲NOT NULL
。因此,你可以使用下面的語法:
CREATE TABLE T1
(
Id int identity PRIMARY KEY
)
如果你想要一些有意義的名字,而不是PK__T1__3214EC0744F9FA13以上的自動分配,應按照此語法:
CREATE TABLE T2
(
Id int IDENTITY CONSTRAINT PK_Id PRIMARY KEY
)
如果您分配一個列爲主鍵,它自己使該列唯一,並且不允許該列中的NULL值。
然後進入身份識別。身份識別會爲每個插入到該表的列指定自動遞增數字。標識列應該是主鍵不是強制性的。
對於將標識列設置爲主鍵沒有這樣的最低要求。通常,如果沒有其他列唯一標識表中的特定記錄,我們將使用標識列。如果列是整數類型,則排序和索引將更具生產力。
在你的情況下,你可以簡單地添加一個列ID爲int作爲數據類型,將其設置爲標識並將主鍵分配給該列。
CREATE TABLE [YourTable]
(
[ID] [int] IDENTITY (1,1)
CONSTRAINT [PK_ID] PRIMARY KEY CLUSTERED ([ID] ASC)
) ON [PRIMARY]
GO
除非你打高爾夫球,否則更喜歡顯性而不是簡潔,往往是我的規則。除非你使用了一個奇怪的SQL Server版本,否則你不會因爲在你的SQL中包含一些額外的單詞而招致額外的許可成本。 –
我很確定你沒有看到使用'auto_increment'的SQL Server的例子 –