Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Cambiar clave primaria (https://www.clubdelphi.com/foros/showthread.php?t=3833)

pinoxito 22-09-2003 00:58:04

Cambiar clave primaria
 
Hola foro! Cual es la sentencia válida para cambiar la clave primaria en una tabla en Interbase? Debo hacerlo en una tabla que ya contiene datos y no puedo borrar ningun dato... Gracias por la ayuda... :D

__cadetill 22-09-2003 10:33:27

Código:

ALTER TABLE Nombre_Tabla
DROP CONSTRAINT Nombre_Primary

ALTER TABLE Nombre_Tabla
ADD CONSTRAINT Nombre_Primary
PRIMARY KEY (Nombre_Campo)


pinoxito 27-09-2003 03:51:08

He probado esto que me has dicho pero no me funciona, mira necesito cambiar la clave primaria de esta tabla que creé hace tiempo:

CREATE TABLE "USUARIO"
(
"CODUSU" INTEGER NOT NULL,
"NOMBRE" VARCHAR(20) NOT NULL,
"CLAVE" VARCHAR(15) NOT NULL,
"ADMINISTRADOR" VARCHAR(1),
PRIMARY KEY ("CODUSU")
);

y necesito tener esto:

CREATE TABLE "USUARIO"
(
"CODUSU" INTEGER NOT NULL,
"NOMBRE" VARCHAR(20) NOT NULL,
"CLAVE" VARCHAR(15) NOT NULL,
"ADMINISTRADOR" VARCHAR(1),
PRIMARY KEY ("CODUSU", "NOMBRE")
);

Pero sin borrar ningun dato, ya que esta tabla esta funcionando con muchos datos.

lbuelvas 28-09-2003 17:48:11

Hola foro,

puede ser que en tu base de datos hay una restriccion tipo llave foranea en otra tabla que esta enlazada con la llave primaria de la tabla a la cual quiere hacerle el cambio.

Debes entonces eliminar primero esas llaves foraneas, hacer los cambios a la llave primaria que te interesa.

Tocaria ampliar las tablas que contenian las llaves foraneas, colocar los valores adecuados a los registros y luego crear la llave foranea.

pinoxito 13-01-2004 15:17:29

No existen restricciones
 
No tengo ningun tipo de restriccion en las tablas :(

y en el codigo de Cadetill:
----------------------------------------------
ALTER TABLE Nombre_Tabla
DROP CONSTRAINT Nombre_Primary

ALTER TABLE Nombre_Tabla
ADD CONSTRAINT Nombre_Primary
PRIMARY KEY (Nombre_Campo)
----------------------------------------------

¿Acaso la clave primaria tiene un nombre? (nombre_Primary)

kinobi 13-01-2004 17:32:49

Hola,

Cita:

Empezado por pinoxito
He probado esto que me has dicho pero no me funciona,

y ... ¿por qué no funciona?, ¿algún mensaje de error?, ¿sí?: ¿cuál?

No vendría mal que fueses más explícito; utilizar las artes adivinatorias no es algo que por aquí se nos dé nada bien. También vendría bien un poco de constancia en la participación en los hilos; con dos meses y medio de diferencia, es bantante probable que los que hubiesemos leído (personalmente ya no me acuerdo si lo había leído) o participado en el mismo no tengamos ni idea de qué iba el asunto y tengamos que leerlo entero otra vez.

Saludos.

pinoxito 13-01-2004 19:59:31

Cuando ejecuto la siguiente accion:

ALTER TABLE "USUARIO" DROP CONSTRAINT "PRIMARY KEY"

Me sale el siguiente error:

Unsuccessful metadata update
CONSTRAINT PRIMARY KEY does not exist
Statement: ALTER TABLE "USUARIO"
DROP CONSTRAINT "PRIMARY KEY"

por eso preguntaba, si en el codigo de cadetill la clave primaria tiene un nombre como el lo escribe:
----------------------------------------------
ALTER TABLE Nombre_Tabla
DROP CONSTRAINT Nombre_Primary
----------------------------------------------

__cadetill 13-01-2004 21:51:26

Cuando decía

ALTER TABLE Nombre_Tabla
DROP CONSTRAINT Nombre_Primary

has de sustituir Nombre_Primary por el nombre que tenga tu clave primaria, por ejemplo :

ALTER TABLE PRUEBA DROP CONSTRAINT PK_PRUEBA


La franja horaria es GMT +2. Ahora son las 21:00:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi