2009-08-31 54 views
25
create table ImagenesUsuario 
{ 
    idImagen int primary key not null IDENTITY 
} 

這不起作用。我怎樣才能做到這一點?將SQL標識創建爲主鍵?

+7

未來,當你說「這不行」時,考慮解釋你的意思。它以某種方式默默地失敗?你有錯誤嗎?如果有的話,錯誤是什麼?你的電腦是否會自發燃燒?創建表格或將行插入表格時會失敗嗎? – 2009-08-31 00:54:41

回答

55

句法簡單的變化是所有需要:

create table ImagenesUsuario (
    idImagen int not null identity(1,1) primary key 
) 

通過明確地使用「約束」的關鍵字,你可以給主鍵約束特定的名稱,而不是依賴SQL Server來自動分配名稱:

create table ImagenesUsuario (
    idImagen int not null identity(1,1) constraint pk_ImagenesUsario primary key 
) 

添加了「分組」的關鍵字是否是有根據您所使用的表格(最感即搜索的特定idImagen餘額和金額寫入速率超過聚類的好處表由其他索引)。

8

這與我們在團隊中產生的腳本類似。先創建表格,然後應用pk/fk和其他約束。

CREATE TABLE [dbo].[ImagenesUsuario] (
    [idImagen] [int] IDENTITY (1, 1) NOT NULL 
) 

ALTER TABLE [dbo].[ImagenesUsuario] ADD 
    CONSTRAINT [PK_ImagenesUsuario] PRIMARY KEY CLUSTERED 
    (
     [idImagen] 
    ) ON [PRIMARY] 
+2

是否有任何理由避免在create table語句中創建主鍵? – 2009-08-31 06:15:14

+3

我假設我們最初模仿由企業管理器等工具產生的腳本。它確實表明您正在創建主鍵約束(而不是列屬性)。它還允許您命名約束。最後,兩種方式都起作用,所以我猜這是一個優先選擇哪一個更容易閱讀/維護的問題。 – Mayo 2009-08-31 13:26:10

1

如果您使用T-SQL,唯一你的代碼錯誤是,你用大括號{},而不是括號()

PS:IDENTITYPRIMARY KEY暗示NOT NULL,所以你可以省略,如果你願意。