Как создать таблицу с идентификационной колонкой

У меня есть существующая таблица, которую я собираюсь сдуть, потому что я не создавал ее с установленным столбцом 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?

Ответ 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]

Ответ 2

Это уже ответили, но я думаю, что самый простой синтаксис:

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

Более сложный индекс ограничений полезен, когда вы действительно хотите изменить параметры.

Кстати, я предпочитаю называть такой столбец HistoryId, поэтому он соответствует именам столбцов в отношениях внешнего ключа.

Ответ 3

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

конечно, так как вы создаете таблицу в SQL Server Management Studio, вы можете использовать конструктор таблиц для установки Спецификации удостоверений.

enter image description here

Ответ 4

Уникальный ключ допускает максимальное значение 2 NULL. Explaination:

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".
Заявление завершено.