SQL Server不会让我创建列标识

时间:2011-04-05 15:54:33

标签: sql-server tsql

所以我在SQL Server中有一个表,主键列和其他4列。当我修改表格并选择主键列为标识时,它不会让我保存表格。

如何通过T-SQL或其他东西使其成为标识列而无需转到UI?

感谢。

这是创建

USE [db]
GO

/****** Object:  Table [dbo].[tblMessages]    Script Date: 04/05/2011 11:58:25 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[tblMessages](
    [messageId] [int] NOT NULL,
    [messageText] [varchar](500) NOT NULL,
    [messageLatitude] [float] NOT NULL,
    [messageLongitude] [float] NOT NULL,
    [messageTimestamp] [datetime] NOT NULL,
PRIMARY KEY CLUSTERED 
(
    [messageId] 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

2 个答案:

答案 0 :(得分:2)

无法将现有列转换为IDENTITY列。

ALTER TABLE dbo.YourTable
  ALTER COLUMN YourColumn INT IDENTITY

会导致错误:

  

Msg 156,Level 15,State 1,Line 2
  关键字附近的语法不正确   '身份'。

您需要创建INT IDENTITY类型的新列,然后可能删除旧列。或者,如果您的表仍为空:将其删除并使用ID列的正确设置重新创建

答案 1 :(得分:1)

ALTER TABLE MyTable
ADD NewIdentity INT IDENTITY;

ALTER TABLE MyTable
DROP COLUMN OldPK;

修改

如果您的表格为空,只需将其删除,然后在IDENTITY之后的PK列中添加INT即可。