Sql 主键不递增

Sql 主键不递增,sql,sql-server,tsql,identity,Sql,Sql Server,Tsql,Identity,我的表中的主键列有问题。我将id列设置为主键,我在ManagementStudio中创建表并将其设置为“是”,将“标识”设置为“是”,将“增量”设置为“1”,将“种子”设置为“1”,但当我尝试插入时,它不希望只插入一次,也不增加id的值。 怎么办?这是ManageMet studio提供的 /****** Object: Table [dbo].[club] Script Date: 01/01/2011 22:00:04 ******/ SET ANSI_NULLS ON GO SE

我的表中的主键列有问题。我将id列设置为主键,我在ManagementStudio中创建表并将其设置为“是”,将“标识”设置为“是”,将“增量”设置为“1”,将“种子”设置为“1”,但当我尝试插入时,它不希望只插入一次,也不增加id的值。 怎么办?这是ManageMet studio提供的

/****** 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

主键本身不会递增,因为它是主键


如果希望在SQL Server中使用“自动递增”字段,则必须将该列设置为列。

主键本身不会递增,因为它是主键

如果希望在SQL Server中使用“自动递增”字段,则必须将该列设置为列。

根据提供的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]
  )
创建表后无法应用标识-需要删除并创建表。您有两个选择:

删除表,使用我提供的CREATETABLE语句,将数据重新添加到表中 创建临时表以存储数据,删除现有俱乐部表,使用IDENTITY属性重新创建俱乐部表,从临时表导入行,继续插入其他数据 根据提供的CREATETABLE语句,很明显没有启用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]
  )
创建表后无法应用标识-需要删除并创建表。您有两个选择:

删除表,使用我提供的CREATETABLE语句,将数据重新添加到表中 创建临时表以存储数据,删除现有俱乐部表,使用IDENTITY属性重新创建俱乐部表,从临时表导入行,继续插入其他数据
由于autoincrement不起作用,您可能没有有价值的数据

我建议使用以下脚本重新创建您的表:

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

由于autoincrement不起作用,您可能没有有价值的数据

我建议使用以下脚本重新创建您的表:

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

不递增是什么意思?在SSMS 2005中,如果只是将结果输入到网格中,则需要按“执行”按钮刷新结果。@OMG Ponies我从Management Studio创建表时,在Studio的id列中将“是标识”选中为“是”。我尝试插入它是什么意思?您不应该插入ID本身,它只是被添加到您的记录中。Eyal@epeleg我在代码中插入Linq to SQL,并且我没有为id输入任何值。之后我直接从男人那里试过。螺柱。我没有在ID中添加任何值,但它不起作用。它不递增是什么意思?在SSMS 2005中,如果只是将结果输入到网格中,则需要按“执行”按钮刷新结果。@OMG Ponies我从Management Studio创建表时,在Studio的id列中将“是标识”选中为“是”。我尝试插入它是什么意思?您不应该插入ID本身,它只是被添加到您的记录中。Eyal@epeleg我在代码中插入Linq to SQL,并且我没有为id输入任何值。之后我直接从男人那里试过。螺柱。我没有在ID中放入任何值,但它不起作用。请说明如何将IDENTITY属性应用于现有列。我认为删除该列并添加一个新列或重新创建整个表是错误的unavoidable@bernd_k-没错。我不知道为什么它可能只是某个地方的一点元数据,并且不会影响数据的物理存储@bernd_k-对于SQL Server 2008,事实证明这是可能的。请说明如何将IDENTITY属性应用于现有列。我认为删除该列并添加一个新列或重新创建整个表是错误的unavoidable@bernd_k-没错。我不知道为什么它可能只是某个地方的一点元数据,并且不会影响数据的物理存储@bernd_k-对于SQLServer2008,事实证明这是可能的。