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

apm*_*apm 2 sql database constraints primary-key mssql-jdbc

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

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

ALTER TABLE *mytable* DROP PRIMARY KEY
Run Code Online (Sandbox Code Playgroud)

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

感谢您提前回复。:)

注意:我在 SQL Server 中有一个表列表来删除主键约束。主键约束是否有任何默认名称

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

     primary key (column_a, column_b)
);
Run Code Online (Sandbox Code Playgroud)

mar*_*c_s 6

您不能在 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.
Run Code Online (Sandbox Code Playgroud)