Первичный ключ не увеличивается - PullRequest
1 голос
/ 01 января 2011

У меня проблема со столбцом первичного ключа в моей таблице.Я устанавливаю столбец идентификатора в качестве первичного ключа (я создаю таблицу в Management studio и устанавливаю там), это идентичность да, увеличение до 1, начальное значение до 1, но когда я пытаюсь вставить, он не хочет вставлять (вставить только один рази не увеличивает значение для id).Что делать ?Это из студии Managememt.

/****** Object:  Table [dbo].[club]    Script Date: 01/01/2011 22:00:04 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[club](
    [id] [int] NOT NULL,
    [name] [varchar](50) NOT NULL,
    [id_city] [int] NOT NULL,
    [street] [varchar](50) NULL,
    [street_number] [nchar](10) NULL,
    [descritpion] [varchar](500) NULL,
    [logo_path] [varchar](50) NULL,
 CONSTRAINT [PK_club] 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]

GO

SET ANSI_PADDING OFF
GO

Ответы [ 3 ]

4 голосов
/ 02 января 2011

На основании предоставленного оператора CREATE TABLE очевидно, что свойство IDENTITY не было включено.Это должно выглядеть примерно так:

CREATE TABLE [dbo].[club](
  [id] [int] IDENTITY(1,1) NOT NULL,
  [name] [varchar](50) NOT NULL,
  [id_city] [int] NOT NULL,
  [street] [varchar](50) NULL,
  [street_number] [nchar](10) NULL,
  [descritpion] [varchar](500) NULL,
  [logo_path] [varchar](50) NULL,
  CONSTRAINT [PK_club] 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]
  )

IDENTITY нельзя применить после создания таблицы - таблицу необходимо удалить и создать.У вас есть несколько вариантов:

  • удалить таблицу, использовать предоставленный мной оператор CREATE TABLE, повторно добавить данные в таблицу
  • создать временную таблицу для хранения данных вудалите существующую таблицу club, заново создайте таблицу club со свойством IDENTITY, импортируйте строки из временной таблицы, продолжайте вставлять дополнительные данные
1 голос
/ 02 января 2011

Поскольку автоинкремент не работает, вероятно, у вас нет ценных данных.

Я предлагаю воссоздать вашу таблицу с помощью следующего сценария:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

DROP TABLE [dbo].[club]
GO

CREATE TABLE [dbo].[club](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [name] [varchar](50) NOT NULL,
    [id_city] [int] NOT NULL,
    [street] [varchar](50) NULL,
    [street_number] [nchar](10) NULL,
    [descritpion] [varchar](500) NULL,
    [logo_path] [varchar](50) NULL,
 CONSTRAINT [PK_club] 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]

GO

SET ANSI_PADDING OFF
GO
0 голосов
/ 02 января 2011

Первичный ключ не увеличивается сам по себе, потому что это первичный ключ.

Если в SQL Server требуется поле «автоинкремент», столбец должен быть установлен как столбец identity .

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