如何使用标识列创建表如何使用标识列创建表(How To Create Table with Iden

2019-05-14 11:27发布

我有一个现有的表,我快要被吹走,因为我没有与创建它ID设置为表的标识列列。

使用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列设置为身份

Answer 1:

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]


Answer 2:

这已经回答了,但我认为最简单的语法是:

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

当你真正想改变的选项更复杂的约束指标是非常有用的。

顺便说一句,我更喜欢这样的名字一栏HistoryId,所以它外键关系的列的名称相匹配。



Answer 3:

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

当然,因为你在SQL Server Management Studio中创建表,你可以使用表设计器来设置标识规范。



Answer 4:

唯一键允许最多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')

每一次你会得到错误,如:

唯一键约束“UQ__teppp__72E12F1B2E1BDC42”的相关规定。 不能插入对象“dbo.teppp”重复键。
该语句已终止。



文章来源: How To Create Table with Identity Column