如何仅使用表名从SQL Server中删除主键约束

时间:2015-09-04 05:38:40

标签: sql database constraints primary-key mssql-jdbc

我想从表mytable中删除主键约束。

在Mysql中我们可以删除主键约束,如

ALTER TABLE *mytable* DROP PRIMARY KEY

如何在SQL Server中执行此操作?

感谢您的回复。 :)

NB :我在SQL Server中有一个表列表,用于删除主键约束。是否有主键约束的默认名称

create table mytable 
(
     column_a integer not null,
     column_b integer not null,

     primary key (column_a, column_b)
);

1 个答案:

答案 0 :(得分:3)

您无法在SQL Server中执行此操作 - 首先确定PK约束的名称。如果您基于固定的命名模式将显式名称赋予主键约束 - 那么也许您只能使用表名来执行此操作....但如果您让SQL Server处理命名自己......

您可以从sys.key_constraints目录视图中确定PK约束的名称,如果运行此查询, 您将获得(作为输出)ALTER TABLE ..... DROP CONSTRAINT .....命令列表,然后您可以使用它们来删除所有命令 对表的约束:

SELECT 
    'ALTER TABLE ' + SCHEMA_NAME(t.schema_id) + '.' + t.Name + 
    ' DROP CONSTRAINT ' + k.name
FROM 
    sys.key_constraints k
INNER JOIN 
    sys.tables t ON k.parent_object_id = t.object_id
WHERE 
    k.type = 'PK'
    AND t.Name IN ('myTable', 'myTable2')   -- etc.