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
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.