如何从仅具有 table 名称的 SQL 服务器中删除主键约束
How to remove primary key constraint from SQL Server with table name only
我想从 table mytable
.
中删除主键约束
在Mysql中我们可以删除主键约束,如
ALTER TABLE *mytable* DROP PRIMARY KEY
如何在 SQL 服务器中执行此操作?
提前感谢您的回复。 :)
NB: 我在 SQL 服务器中有一个 table 的列表来删除主键约束。主键约束是否有默认名称
create table mytable
(
column_a integer not null,
column_b integer not null,
primary key (column_a, column_b)
);
您不能在 SQL 服务器中执行此操作 - 必须先确定 PK 约束的 名称。如果您要根据固定的命名模式为您的主键约束提供 显式 名称 - 那么也许您可以仅使用 table 名称......但不是如果你让 SQL 服务器自己处理命名....
您可以从 sys.key_constraints
目录视图中确定 PK 约束的名称,如果您 运行 此查询,
您将获得(作为输出)作为 ALTER TABLE ..... DROP CONSTRAINT .....
命令的列表,然后您可以使用这些命令删除所有
您的 table 的约束条件:
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.
我想从 table mytable
.
在Mysql中我们可以删除主键约束,如
ALTER TABLE *mytable* DROP PRIMARY KEY
如何在 SQL 服务器中执行此操作?
提前感谢您的回复。 :)
NB: 我在 SQL 服务器中有一个 table 的列表来删除主键约束。主键约束是否有默认名称
create table mytable
(
column_a integer not null,
column_b integer not null,
primary key (column_a, column_b)
);
您不能在 SQL 服务器中执行此操作 - 必须先确定 PK 约束的 名称。如果您要根据固定的命名模式为您的主键约束提供 显式 名称 - 那么也许您可以仅使用 table 名称......但不是如果你让 SQL 服务器自己处理命名....
您可以从 sys.key_constraints
目录视图中确定 PK 约束的名称,如果您 运行 此查询,
您将获得(作为输出)作为 ALTER TABLE ..... DROP CONSTRAINT .....
命令的列表,然后您可以使用这些命令删除所有
您的 table 的约束条件:
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.