将主键设置为现有表

时间:2016-02-23 08:02:49

标签: sql-server postgresql

我有一张包含15条记录的表格。该表没有任何主键约束。

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

适用于SQL Server 2008。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

create table
#temp
(
id int
)

ALTER TABLE #temp
ADD CONSTRAINT id_pk PRIMARY KEY (id)

以上将失败。您必须至少在SQL Server 2005中首先运行以下查询。

alter table #temp
alter column id int not null