PDA

Ver la Versión Completa : cambiar una clave primaria


User_Baja_2
06-10-2003, 12:20:22
Me gustaria saber si se puede cambiar la clave primaria, en ejecucción, por SQL, si utilizo paradox, y delphi 5 enterprise.

(Cambiar los campos, nombres.. o añadir nuevos campos a la clave... etc)

marcoszorrilla
06-10-2003, 15:27:57
Aquí tienes un ejemplo de como quitar la clave primaria.


DROP INDEX "employee.db".PRIMARY



Añadir campos:

AlterQry.SQL.Clear;
AlterQry.SQL.Add('ALTER TABLE "MyTable" ADD ADateField DATE, ');
AlterQry.SQL.Add('ADD ATimeField TIME, ');
AlterQry.SQL.Add('ADD AnIntegerField INTEGER, ');
AlterQry.SQL.Add('ADD AStringField CHAR(255) ');
AlterQry.ExecSQL;


Un Saludo.

marcoszorrilla
06-10-2003, 15:37:32
No obstante, como según se indica en la información de Paradox, no se puede crear una clave primaria, para una tabla que ya existe:

CREATE INDEX NAMEX ON "employee.dbf" (LAST_NAME)

Paradox table users can create only secondary indexes with CREATE INDEX. Primary Paradox indexes can be created only by specifying a PRIMARY KEY constraint when creating a new table with CREATE TABLE.


Propongo la siguiente solución:

1º.- Crear una nueva tabla idéntica a la anterior, pero con la clave primaria sobre el campo deseado.



Add('CREATE TABLE "PDoxTbl.db" (ID AUTOINC,');
Add('Name CHAR(255),');
Add('PRIMARY KEY(ID))');



Finalmente pasar todos los registros de la Tabla A a la Tabla B.

Borramos Tabla A, renombramos Tabla B como tabla B.

Un Saludo.

roman
06-10-2003, 18:03:38
Posteado originalmente por nuppy
Me gustaria saber si se puede cambiar la clave primaria, en ejecucción, por SQL, si utilizo paradox, y delphi 5 enterprise.


¿Alguna razón en particular para usar SQL?

De lo contrario puedes usar los métodos DeleteIndex y AddIndex de TTable.

// Saludos