Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-05-2016
MALBOTO22 MALBOTO22 is offline
Miembro
 
Registrado: oct 2005
Posts: 21
Poder: 0
MALBOTO22 Va por buen camino
Problema al crear una llave primaria

Buenas noches, agradezco su colaboración para determinar que puedo estar haciendo mal o para saber si existe alguna restricción para crear llaves primarias con campos smallint.

Cree una base de datos con la siguiente estructura

Código:
CREATE DATABASE 'localhost:C:\BDSIDUTEC\SIDUTEC3.fdb'
  USER 'SYSDBA' PASSWORD '**********'
  PAGE_SIZE 4096
  DEFAULT CHARACTER SET ISO8859_1;
   
  /* Roles */
  CREATE ROLE RDB$ADMIN;
   
  /* Domains */
  CREATE DOMAIN CAD_CORTA AS
    CHAR(20);
  CREATE DOMAIN CAD_LARGAS AS
    VARCHAR(255);
  CREATE DOMAIN CAD_MEDIANA AS
    CHAR(40);
  CREATE DOMAIN CARACTER AS
    CHAR;
  CREATE DOMAIN ENT_CORTO AS
    SMALLINT [0:32767];
  CREATE DOMAIN ENT_LARGO AS
    INTEGER;
  CREATE DOMAIN NUM_DOC AS
    BIGINT
    NOT NULL;
   
  /* Tables */
  CREATE TABLE TIPOS_IDENTIFI (
    COD_TIP_IDE  ENT_CORTO NOT NULL,
    NOM_IDENTI   CAD_MEDIANA NOT NULL
  ) ;
  COMMIT;
   
  /* Datos por tabla  */
Intente crear una llave primaria cuando cree la tabla pero no me lo permitio, luego intente adicionar la llave primaria con el siguiente comando

Código:
ALTER TABLE TIPOS_IDENTIFI ADD CONSTRAINT PK_COD_TIP_IDE PRIMARY KEY (COD_TIP_IDE);
No acepta el commando y genera el siguiente error:

Código:
Engine Error (code = 335544351):
  unsuccessful metadata update.
   attempt to index array column in index PK_COD_TIP_IDE.
   
  SQL Error (code = -607):
  This operation is not defined for system tables.
Para descartar un error en la sintaxis del comando ingrese el mismo código para el campo NOM_IDENTI y si se creo la llave primaria.

Código:
ALTER TABLE TIPOS_IDENTIFI ADD CONSTRAINT PK_COD_TIP_IDE PRIMARY KEY (NOM_IDENTI);
Ante esto me agradaria saber si es que los tipos de datos smallint tienen alguna restricción para crear las llaves primarias o los dominios pueden estar generando algún problema?

Mil gracias por la ayuda que me puedan brindar, estoy trabajando con Firebird 2.5.1., Firebird Maestro 14 y Windows 7 Profesional de 32 bits.
Responder Con Cita
  #2  
Antiguo 30-05-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No sé si es algo nuevo, pero nunca había visto ese array:
CREATE DOMAIN ENT_CORTO AS SMALLINT [0:32767];
Lo normal:
CREATE DOMAIN ENT_CORTO AS SMALLINT;

Responder Con Cita
  #3  
Antiguo 30-05-2016
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
1. Si quieres declarar un array en firebird (aunque no es usual, y hasta sus propios desarrolladores desaconsejan su uso) la cosa es: Tipo [tamaño] mientras que tu haces Tipo [0:tamaño]

2. Tener un array como clave primaria no es legal.
3. El error justamente te dice que no está permitido.

4. Lee la Release Notes y la documentación de Firebird.
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
Antiguo 30-05-2016
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Por lógica una clave primaria deber unica, y un arreglo rompe esa regla.

Enviado desde mi SM-G900H mediante Tapatalk
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #5  
Antiguo 30-05-2016
MALBOTO22 MALBOTO22 is offline
Miembro
 
Registrado: oct 2005
Posts: 21
Poder: 0
MALBOTO22 Va por buen camino
Thumbs up

Mil gracias por la colaboración, efectivamente el error fue mio, al crear el dominio le defini el arreglo y le puse los limites que aparecen en la definición.

Ya corregi borrando el dominio y volviendo a crearlo sin el arreglo y los limites ingresados.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Extrañisimo problema con Llave juliobuitrago Firebird e Interbase 5 23-03-2011 10:23:58
buscando llave primaria Willo MySQL 0 14-12-2007 17:16:19
Crear Llave Primaria ebeltete Firebird e Interbase 2 07-12-2007 15:20:11
Llave primaria repetida Coco_jac Varios 5 29-08-2007 23:48:12
crear una llave alfanumerica con un generador reina SQL 3 17-08-2005 19:49:44


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


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
Copyright 1996-2007 Club Delphi