Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   cambiar una clave primaria (https://www.clubdelphi.com/foros/showthread.php?t=4211)

User_Baja_2 06-10-2003 12:20:22

cambiar una clave primaria
 
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.

Código:

DROP INDEX "employee.db".PRIMARY

Añadir campos:
Código:

  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:

Cita:

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.


Código:

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

Cita:

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


La franja horaria es GMT +2. Ahora son las 06:09:58.

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