Синтаксические ошибки автоматического увеличения - PullRequest
0 голосов
/ 09 мая 2020

Вот код моей простой базы данных:

enter image description here

CREATE TABLE [dbo].[User_Info] (
[Username]  NVARCHAR (50) NOT NULL,
[Password]  NVARCHAR (50) NOT NULL,
[Firstname] NVARCHAR (50) NOT NULL,
[Lastname]  NVARCHAR (50) NOT NULL,
[Email]     NVARCHAR (50) NOT NULL,
[Country]   NVARCHAR (50) NOT NULL,
[Phone]     NVARCHAR (50) NOT NULL,
[Gender]    NVARCHAR (50) NOT NULL,
[Admin]     INT           NULL,
PRIMARY KEY CLUSTERED ([Username] ASC)
);
SELECT GO * from User_Info;

Alter table User_Info
add column id int NOT NULL auto_increment Unique Key;

Ошибка для этого CREATE:

В пакете допускается только 1 оператор, например, 'GO', может потребоваться между операторами

, а ошибка для column:

Неправильный синтаксис рядом с 'столбцом'

Мне нужна система автоматической идентификации, чтобы я мог продолжить работу со своим сайтом, как я могу исправить этот беспорядок?

Ответы [ 4 ]

1 голос
/ 09 мая 2020

При добавлении столбца укажите IDENTITY в спецификации ограничения UNIQUE, чтобы гарантировать уникальные значения независимо от первичного ключа. В приведенном ниже примере также указывается имя ограничения, которое рекомендуется вместо автоматически созданных имен ограничений.

CREATE TABLE [dbo].[User_Info] (
    [Username]  NVARCHAR (50) NOT NULL,
    [Password]  NVARCHAR (50) NOT NULL,
    [Firstname] NVARCHAR (50) NOT NULL,
    [Lastname]  NVARCHAR (50) NOT NULL,
    [Email]     NVARCHAR (50) NOT NULL,
    [Country]   NVARCHAR (50) NOT NULL,
    [Phone]     NVARCHAR (50) NOT NULL,
    [Gender]    NVARCHAR (50) NOT NULL,
    [Admin]     INT           NULL,
PRIMARY KEY CLUSTERED ([Username] ASC)
);

ALTER TABLE dbo.User_Info
    ADD id int NOT NULL IDENTITY CONSTRAINT UQ_User_Info_id UNIQUE;
GO
1 голос
/ 09 мая 2020

Код для T- SQL:

CREATE TABLE dbo.UserInfo (
    UserName nvarchar(50) not null,
    PRIMARY KEY CLUSTERED (UserName ASC)
);
SELECT * FROM UserInfo;
GO
ALTER TABLE dbo.UserInfo ADD id int not null  IDENTITY(1,1);

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

1 голос
/ 09 мая 2020

Вам нужно добавить разделитель пакетов, удалить ключевое слово column и заменить auto_increment Unique Key на identity(1,1) unique

CREATE TABLE [dbo].[User_Info] (
[Username]  NVARCHAR (50) NOT NULL,
[Password]  NVARCHAR (50) NOT NULL,
[Firstname] NVARCHAR (50) NOT NULL,
[Lastname]  NVARCHAR (50) NOT NULL,
[Email]     NVARCHAR (50) NOT NULL,
[Country]   NVARCHAR (50) NOT NULL,
[Phone]     NVARCHAR (50) NOT NULL,
[Gender]    NVARCHAR (50) NOT NULL,
[Admin]     INT           NULL,
PRIMARY KEY CLUSTERED ([Username] ASC)
);
GO
SELECT * from User_Info;
GO
Alter table User_Info
add id int identity(1,1) not null unique;
GO
1 голос
/ 09 мая 2020

У меня работал код ниже:

CREATE TABLE user_Info (
   [admin] int IDENTITY(1,1) PRIMARY KEY,
   [Username]  NVARCHAR (50) NOT NULL,
   [Password]  NVARCHAR (50) NOT NULL,
   [Firstname] NVARCHAR (50) NOT NULL,
   [Lastname]  NVARCHAR (50) NOT NULL,
   [Email]     NVARCHAR (50) NOT NULL,
   [Country]   NVARCHAR (50) NOT NULL,
   [Phone]     NVARCHAR (50) NOT NULL,
   [Gender]    NVARCHAR (50) NOT NULL,
);
...