首页 文章

将主键更改为组合键(主键已存在)

提问于
浏览
10

我试图将我的SQL数据库中的表的主键从现有键更改为复合键,该组合键不包括现有列 . 由于以下错误消息,以下代码无法正常工作:

DROP PRIMARY KEY:

PRIMARY附近的语法不正确 . 期望COLUMN,CONSTRAINT,ID或QUOTED_ID

ADD PRIMARY KEY:

PRIMARY附近的语法不正确 . 期待身份证

T-SQL代码:

ALTER TABLE AgentIdentification 
DROP PRIMARY KEY Number, 
ADD PRIMARY KEY (AgentId, IdIndicator)

编辑

我能够通过使用以下两个查询语句来完成此任务

ALTER TABLE AgentIdentification 
DROP CONSTRAINT [PK_AgentId_Id]
GO

ALTER TABLE AgentIdentification
ADD CONSTRAINT pk_PersonID PRIMARY KEY (AgentId, IdIndicator)

我没有要求SQL“DROP PRIMARY KEY”,而是要将它告诉“DROP CONSTRAINT”,而是将这两个动作分成两个查询 .

1 回答

  • 22
    /* For SQL Server/Oracle/MS ACCESS */
        ALTER TABLE  AgentIdentification 
        DROP CONSTRAINT PK_Table1_Col1
    
    
        /* For MySql */
        ALTER TABLE  AgentIdentification 
        DROP PRIMARY KEY
    

    添加主键:

    MySQL / SQL Server / Oracle / MS Access:
    
    ALTER TABLE Table1
    ADD CONSTRAINT pk_PersonID PRIMARY KEY (AgentId, IdIndicator)
    

相关问题