我有一个表设置,目前没有主键。我需要做的只是添加primary key, no null, auto_increment
。
我正在使用Microsoft SQL Server
数据库。我知道它不能在单个命令中完成,但我尝试的每个命令都会返回语法错误。
编辑---------------
我创建了主键,甚至将其设置为非null。但是,我无法设置auto_increment
。
我试过了:
ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment
ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment
我正在使用NVARCHAR
因为它不允许我在int下设置NOT NULL
答案 0 :(得分:110)
可以在一个命令中完成。您需要为“自动编号”设置IDENTITY属性:
ALTER TABLE MyTable ADD mytableID int NOT NULL IDENTITY (1,1) PRIMARY KEY
更确切地说,要设置命名表级约束:
ALTER TABLE MyTable
ADD MytableID int NOT NULL IDENTITY (1,1),
CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (MyTableID)
请参阅MSDN上的ALTER TABLE and IDENTITY
答案 1 :(得分:21)
如果表已包含数据,并且您希望将其中一列更改为identity:
首先创建一个具有相同列的新表并指定主键 - kolumn:
create table TempTable
(
Id int not null identity(1, 1) primary key
--, Other columns...
)
然后使用标准insert
语句将原始表中的所有行复制到新表中。
然后放下原始表格。
最后使用TempTable
将sp_rename
重命名为您想要的任何内容:
答案 2 :(得分:13)
您还可以通过SQL Server Management Studio执行此操作。
右键点击您选择的表格 - >修改
右键单击要设置为PK的字段 - >设置主键
在“列属性”下,将“标识规范”设置为“是”,然后指定起始值和增量值。
然后将来如果你想能够编写这类东西,你可以右键点击你刚刚修改过的表格并选择
“SCRIPT TABLE AS” - >创建
这样您就可以自己查看执行此操作的正确语法。
答案 3 :(得分:1)
答案 4 :(得分:0)
在SQL Server 2008中:
答案 5 :(得分:-1)
你可以尝试这个...... ALTER TABLE Your_Table ADD table_ID int NOT NULL PRIMARY KEY auto_increment;