Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将主键设置为现有表_Sql Server_Postgresql - Fatal编程技术网

Sql server 将主键设置为现有表

Sql server 将主键设置为现有表,sql-server,postgresql,Sql Server,Postgresql,我有一张有15张唱片的桌子。该表没有任何主键约束 现在我想在现有列中设置一个主键。如何将具有主键约束的列设置为现有表?有人可以提供查询来更改列吗 它适用于SQL server 2008。更改语法以将主键约束添加到现有表中 ALTER TABLE table_name ADD CONSTRAINT Primarykeyname PRIMARY KEY (column_name); 指定要设置主键的列名。列的值应该是唯一的。这是一个可运行的脚本。试试这个: IF NOT EXISTS(SELEC

我有一张有15张唱片的桌子。该表没有任何主键约束

现在我想在现有列中设置一个主键。如何将具有主键约束的列设置为现有表?有人可以提供查询来更改列吗


它适用于SQL server 2008。

更改语法以将主键约束添加到现有表中

ALTER TABLE table_name 
ADD CONSTRAINT Primarykeyname PRIMARY KEY (column_name);

指定要设置主键的列名。列的值应该是唯一的。

这是一个可运行的脚本。试试这个:

IF NOT EXISTS(SELECT 'X'
              FROM   INFORMATION_SCHEMA.TABLE_CONSTRAINTS
              WHERE  CONSTRAINT_NAME = 'PRIMARY_KEY_NAME'
                     AND TABLE_NAME = 'TABLE_NAME')
  ALTER TABLE TABLE_NAME
    ADD CONSTRAINT PRIMARY_KEY_NAME PRIMARY KEY(COLUMN_NAME_TO_BE_ADDED_AS_PRIMARY_KEY)

GO

设置主键与下面的查询一样简单,但列应声明为NOTNULL,如果任何现有值违反主键约束,则查询可能不会成功

create table
#temp
(
id int
)

ALTER TABLE #temp
ADD CONSTRAINT id_pk PRIMARY KEY (id)
上述措施将失败。您必须至少在SQLServer2005中首先运行以下查询

alter table #temp
alter column id int not null

在添加主键约束之前,现有记录应该是唯一的。这是一项基本操作。在这里提问之前,请尝试使用谷歌。如果你这样做了,你会发现你的问题没有显示出任何研究成果