Ноль как первичный ключ в SQL Server 2008 - PullRequest
2 голосов
/ 07 декабря 2010

Можно ли вставить 0 в поле первичного ключа таблицы в SQL Server 2008?

Ответы [ 2 ]

6 голосов
/ 07 декабря 2010

Пока это числовое поле, да ... следуйте в домашних условиях!

create table TestTable
(
    TestColumn int not null primary key
)

insert TestTable values(0)

Ограничение primary key требует только, чтобы значение было уникальным, а столбец не обнулялся.

Для поля identity:

create table TestTable
(
    TestColumn int identity(1, 1) not null primary key --start at 1
)

set identity_insert TestTable on
insert TestTable (TestColumn) values (0) --explicitly insert 0
set identity_insert TestTable off

identity(1, 1) означает «начать с единицы и увеличивать на единицу каждый раз, когда что-то вставляется».Вы можете иметь identity(-100, 10), чтобы начать с -100 и увеличивать на 10 каждый раз.Или вы могли бы начать с 0.Ограничений нет.

Обычно вы можете сами ответить на подобные вопросы, просто попробовав их и посмотрев, работают ли они.Это быстрее и обычно выгоднее, чем запрашивать в StackOverflow.

0 голосов
/ 20 декабря 2012

Да, это может быть ноль.Значение может быть от –2 147 483 648 до 2 147 483 647, от - (2 ^ 31) до 2 ^ 31 - 1 - полный диапазон целого числа без знака.

Если ожидается большое количество записей, например до 4,3миллиард, имеет смысл начать с наименьшего значения и продолжить свой путь.

CREATE TABLE TestTable
(
    TestColumn INT IDENTITY(−2,147,483,648, 1) NOT NULL PRIMARY KEY --start at 1
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...