Создать идентификатор SQL в качестве первичного ключа? - PullRequest
33 голосов
/ 31 августа 2009
create table ImagenesUsuario
{
    idImagen int primary key not null IDENTITY
}

Это не работает. Как я могу это сделать?

Ответы [ 3 ]

67 голосов
/ 31 августа 2009

Простое изменение синтаксиса - это все, что нужно:

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

Явно используя ключевое слово «constraint», вы можете дать ограничению первичного ключа конкретное имя, а не в зависимости от SQL Server автоматически назначать имя:

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

Добавьте ключевое слово "CLUSTERED", если это наиболее целесообразно на основе использования вами таблицы (т. Е. Баланс поисков для определенного idImagen и количества записей перевешивает преимущества кластеризации таблицы по некоторому другому индексу).

8 голосов
/ 31 августа 2009

Это похоже на сценарии, которые мы генерируем в нашей команде. Сначала создайте таблицу, затем примените 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] 
3 голосов
/ 14 октября 2015

Если вы используете T-SQL, единственное, что не так с вашим кодом, это то, что вы использовали скобки {} вместо скобок ().

PS: IDENTITY и PRIMARY KEY означают NOT NULL, так что вы можете опустить это, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...