Sql 主键不递增
我的表中的主键列有问题。我将id列设置为主键,我在ManagementStudio中创建表并将其设置为“是”,将“标识”设置为“是”,将“增量”设置为“1”,将“种子”设置为“1”,但当我尝试插入时,它不希望只插入一次,也不增加id的值。 怎么办?这是ManageMet studio提供的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
/****** 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,事实证明这是可能的。