modificar una Primary key

Carolin
26 de Abril del 2005
hola

tengo un probema con llaves primarias, lo que pasa es que necesito
modificar una llave primaria para que esta compuesta por el codigo del municipio, y necesito que sea una llave primaria compuesta por el codigo y el nombre del municipio.

muchas gracias si pueden ayudarme

jc3000
26 de Abril del 2005
Bueno, aparte de un problema con las llaves primarias creo tienes un problema con el oracle.
Si tienes un maestro de Municipios, la llave primaria debe ser el codigo, si la pones con el código + descripción la vas a cagar pero bien.
En fins, si eso te ayuda y te hace feliz, esto es lo que tienes que poner para cambiar la llave primaria :
La tienes que borrar y crear de nuevo

ALTER TABLE PATATIN
DROP CONSTRAINT NOMBRE_DE_LA_LLAVE_PRIMARIA
/

ALTER TABLE PATATIN
ADD CONSTRAINT NOMBRE_DE_LA_LLAVE_PRIMARIA PRIMARY KEY ( CODIGO,DESCRIPCION )
/

Pero acuerdate de esto, la vas a cagar.
Saludos

Rodolfo Reyes
26 de Abril del 2005
No me acuerdo de como hacerlo de manera directa. Por puedes eliminar la llave primaria y volver a crearla.

Por ejemplo:
--Se crea la tabla con su llave primaria
create table prueba_llave
(campo1 number(3) not null,
nombre varchar2(30) not null,
estado varchar2(1),
constraint PK_prueba_llave primary key (campo1)
)
/

--Eliminas la llave primaria
ALTER TABLE PRUEBA_LLAVE
DROP CONSTRAINT "PK_PRUEBA_LLAVE" CASCADE
/



--Vuelves a crear la llave primaria
ALTER TABLE PRUEBA_LLAVE
ADD (CONSTRAINT PK_PRUEBA_LLAVE PRIMARY KEY(CAMPO1, NOMBRE))
/

P.D. Recuerda que el campo de la llave primaria tiene que ser NOT NULL. No estoy seguro si hace este cambio automatico, cuando se elige un atributo como parte de la llave primaria, y si hay que hacerlo uno mismo.


trazom
26 de Abril del 2005
Creo en lugar de agregar el nombre del municipio a la clave primaria, lo que deberias hacer es declararlo como UNIQUE KEY, y no modificar la clave primaria.