2012-08-28 68 views
9

Estoy intentando cambiar la clave primaria de una tabla en mi base de datos SQL de la clave existente a una clave compuesta, que no incluye la columna existente. El siguiente código no está funcionando debido a los mensajes de error siguientes:Cambiar clave principal a clave compuesta (la clave principal ya existe)

DROP PRIMARY KEY:

incorrecta cerca PRIMARIA Sintaxis. Esperando COLUMNA, la restricción, ID, o QUOTED_ID

agregar la clave principal:

incorrecta cerca PRIMARIA Sintaxis. Esperando ID

código T-SQL:

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

EDITAR

pude lograr esto mediante el uso de las siguientes dos sentencias de consulta

ALTER TABLE AgentIdentification 
DROP CONSTRAINT [PK_AgentId_Id] 
GO 

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

En lugar de solicitar que se SQL "DROP PRIMARY KEY" Necesité decirle "DROP CONSTRAINT", separando también estas dos acciones i nto dos consultas ayudaron.

+7

favor Marcar este con el RDBMS correcta. SQL no es una base de datos; es un lenguaje utilizado por muchos (algo diferente en cada caso). – Ben

+0

¿Desea eliminar el campo PK o la restricción PK? – danihp

+3

Por favor: 1) Especifique su base de datos, 2) Corte/pegue el mensaje de error exacto, 3) Considere dividir su comando en dos declaraciones "alter table", 4) Tenga en cuenta que probablemente necesite otras declaraciones (por ejemplo, para eliminar restricciones), o incluso podría tener que descartar y volver a crear la tabla completa – paulsm4

Respuesta

20
/* For SQL Server/Oracle/MS ACCESS */ 
    ALTER TABLE AgentIdentification 
    DROP CONSTRAINT PK_Table1_Col1 


    /* For MySql */ 
    ALTER TABLE AgentIdentification 
    DROP PRIMARY KEY 

Para agregar la clave principal:

MySQL/SQL Server/Oracle/MS Access: 

ALTER TABLE Table1 
ADD CONSTRAINT pk_PersonID PRIMARY KEY (AgentId, IdIndicator) 
+1

'ALTER TABLE .. DROP PRIMARY KEY' también funciona para Oracle si no me equivoco –

+1

@NealR: No respondió. ¿Qué RDBMS usas? SQL-Server, MySQL, Oracle, Postgres, DB2, ¿otro? – paulsm4

+0

Es el servidor SQL. Tendrás que disculparme, estoy haciendo una pasantía en este momento y no estoy familiarizado con todos los términos. – NealR

Cuestiones relacionadas