You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除复合主键中的一列且保留主键约束?

解决方法

要移除复合主键中的某一列并保留主键约束,你需要先删除原主键约束,移除目标列后,再基于剩余的列重新创建主键约束。具体步骤如下:

  1. 获取当前主键约束名称(避免硬编码约束名,适配不同环境)
    使用更精准的系统视图查询主键约束:

    DECLARE @ConstraintName NVARCHAR(MAX);
    SELECT @ConstraintName = name
    FROM sys.key_constraints
    WHERE type = 'PK' AND parent_object_id = OBJECT_ID('PrimaryDeneme1');
    
  2. 删除原主键约束

    ALTER TABLE PrimaryDeneme1
    DROP CONSTRAINT @ConstraintName;
    
  3. 移除目标列

    ALTER TABLE PrimaryDeneme1
    DROP COLUMN SomeColumn1;
    
  4. 基于剩余列重新创建主键约束
    假设原复合主键的另外两列是SomeColumn2和SomeColumn3,执行以下语句重建主键:

    ALTER TABLE PrimaryDeneme1
    ADD CONSTRAINT PK_PrimaryDeneme1 PRIMARY KEY (SomeColumn2, SomeColumn3);
    

完整示例代码

-- 获取主键约束名
DECLARE @ConstraintName NVARCHAR(MAX);
SELECT @ConstraintName = name
FROM sys.key_constraints
WHERE type = 'PK' AND parent_object_id = OBJECT_ID('PrimaryDeneme1');

-- 删除原主键
ALTER TABLE PrimaryDeneme1
DROP CONSTRAINT @ConstraintName;

-- 删除目标列
ALTER TABLE PrimaryDeneme1
DROP COLUMN SomeColumn1;

-- 重建主键(替换为你的剩余主键列)
ALTER TABLE PrimaryDeneme1
ADD CONSTRAINT PK_PrimaryDeneme1 PRIMARY KEY (SomeColumn2, SomeColumn3);

注意:替换代码中的SomeColumn2和SomeColumn3为实际保留的主键列名,约束名PK_PrimaryDeneme1可根据需要修改。

内容的提问来源于stack exchange,提问作者Ahmet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 08:22:39