簡體   English   中英

如何使用標識列創建表

[英]How To Create Table with Identity Column

我有一個現有的表,因為我沒有創建它並將ID列設置為表的 Identity 列,所以我將要刪除它。

使用SQL Server Management Studio ,我編寫了現有表的“創建到...”腳本並得到了這個:

CREATE TABLE [dbo].[History](
    [ID] [int] NOT NULL,
    [RequestID] [int] NOT NULL,
    [EmployeeID] [varchar](50) NOT NULL,
    [DateStamp] [datetime] NOT NULL,
 CONSTRAINT [PK_History] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

我的問題是,我將如何修改此SQL以便我的結果表將ID列設置為Identity

CREATE TABLE [dbo].[History](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [RequestID] [int] NOT NULL,
    [EmployeeID] [varchar](50) NOT NULL,
    [DateStamp] [datetime] NOT NULL,
 CONSTRAINT [PK_History] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON)
) ON [PRIMARY]

這已經得到了回答,但我認為最簡單的語法是:

CREATE TABLE History (
    ID int primary key IDENTITY(1,1) NOT NULL,
    . . .

當您真正想要更改選項時,更復雜的約束索引很有用。

順便說一句,我更喜歡將這樣的列命名為 HistoryId,因此它與外鍵關系中的列的名稱相匹配。

[id] [int] IDENTITY(1,1) NOT NULL,

當然,由於您是在 SQL Server Management Studio 中創建表,因此您可以使用表設計器來設置標識規范。

在此處輸入圖片說明

唯一鍵允許最多 2 個 NULL 值。 說明:

create table teppp
(
id int identity(1,1) primary key,
name varchar(10 )unique,
addresss varchar(10)
)

insert into teppp ( name,addresss) values ('','address1')
insert into teppp ( name,addresss) values ('NULL','address2')
insert into teppp ( addresss) values ('address3')

select * from teppp
null string , address1
NULL,address2
NULL,address3

如果您嘗試插入與以下相同的值:

insert into teppp ( name,addresss) values ('','address4')
insert into teppp ( name,addresss) values ('NULL','address5')
insert into teppp ( addresss) values ('address6')

每次你都會得到這樣的錯誤:

違反 UNIQUE KEY 約束“UQ__teppp__72E12F1B2E1BDC42”。 無法在對象“dbo.teppp”中插入重復鍵。
該語句已終止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM