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)
-   -   Encontrar definición de clave primaria (https://www.clubdelphi.com/foros/showthread.php?t=89500)

Angel.Matilla 02-12-2015 19:56:40

Encontrar definición de clave primaria
 
Estoy trabajando con FB 2.5. Tengo una tabla con esat definición:
Código:

CREATE TABLE CTAEMI (
  EMISOR INTEGER NOT NULL,
  CUENTA VARCHAR(20) NOT NULL,
  SUFIJO VARCHAR(20) NOT NULL,
  ADD PRIMARY KEY (EMISOR,CUENTA,SUFIJO)

y tengo que modificar la estructura de la tabla cambiando la definicion del campo CUENTA para que pase a tener 34 posiciones. Dado que dicho campo está dentro de la definición de la clave primaria, antes de hacer el ALTER TABLE:
Código:

ALTER TABLE CTAEMI
ALTER COLUMN CUENTA
TYPE VARCHAR(34)

tengo que eliminar la clave primaria.

Dado que al crear la tabla la primera vez no se me ocurrió "bautizar" dicha clave, he estado buceando por las tablas RDB$ del sistema, pero al mirar la estructura de dicha tabla con EMS SQL Manager me encuentro que el nombre (Name) asignado de forma automática por el sistema ha sido INTEG_20 y el índice (Index name) lo ha llamado RDB$PRIMARY5. He podido localizar este último valor pero al tratar de hacer un DROP del índice tendría que ser así:
Código:

ALTER TABLE CTAEMI DROP CONSTRAINT INTEG_20
Ese valor RDB$PRIMARY5 si lo he localizado en RDB$INDICES, pero INTEG_20 no he sido capaz de encontrarlo. ¿Dónde se guardan los nombres de los índices?

lbuelvas 02-12-2015 20:13:10

Este enlace es antiguo pero te puede ser útil.

http://www.alberton.info/firebird_sql_meta_info.html

Neftali [Germán.Estévez] 03-12-2015 09:39:22

Prueba con esta:

Código SQL [-]
SELECT * FROM RDB$RELATION_CONSTRAINTS RCX,RDB$INDEX_SEGMENTS ISX
WHERE RCX.RDB$RELATION_NAME='NOMBRE_MI_TABLA'
AND RCX.RDB$CONSTRAINT_TYPE='PRIMARY KEY' AND RCX.RDB$INDEX_NAME=ISX.RDB$INDEX_NAME

Donde "NOMBRE_MI_TABLA" es el nopmbre de la tabla sobre la que estás buscando la clave primaria.

Angel.Matilla 03-12-2015 09:55:37

Cita:

Empezado por Neftali (Mensaje 500132)
Prueba con esta:

Perfecto Neftalí; es exactamente lo que necesito. Muchas gracias.


La franja horaria es GMT +2. Ahora son las 03:24:53.

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