Tipo de dato enumerado en Interbase


  • 0

    El título no puede ser más preciso. Estoy a vueltas con la práctica de bases de datos de este año, y pese a que en un principio habíamos optado por usar MySQL, después de crear todas las tablas y FKs nos hemos pasado a Interbase/Firebird porque no hubo manera de que se tragara las claves foráneas el puto mysql.

    Así que, aquí estamos "migrando" todo y andamos con mil problemas. En mysql teníamos definidas varias tuplas con un tipo de datos enumerado (ENUM) pero esto Interbase no lo reconoce. Ahora tengo que crear las tablas y no puedo hacerlo por culpa de ese error ¿qué puedo hacer?

    He buscado y rebuscado y no aparece nada sobre cómo crear tipos enumerados en IB pero estoy seguro de que se puede hacer. Con la opción de crear dominios no veo manera de insertar valores :llorar:

    Os pongo un ejemplo:

    CREATE TABLE "tipo_socio" (
      "nom_tipo_socio" enum('estándar','aqua','VIP','estándar(B)','aqua(B)','VIP(B)') NOT NULL,
      "bono" smallint default 0 NOT NULL, --booleano inicializado a falso
      "precio" double precision NOT NULL,
      PRIMARY KEY  ("nom_tipo_socio"));
    

    ¿ideas?



  • 1

    Yo tuve que hacer las practicas de bbdd con interbase. A decir verdad, no me acuerdo mucho de la sintaxis de dicho gestor, pero bucenado entre mis practicas he encontrado esto, que a lo mejor te puede valer:

    CREATE DOMAIN Estado
       AS VARCHAR(15)
       CHECK (VALUE IN ('iniciado', 'presupuestado', 'aceptado', 'rechazado', 'cerrado'));
    
    CREATE TABLE Hoja (
          CodHoja      varchar(8) NOT NULL,
          Fecha        date NOT NULL,
          Hora         time NOT NULL,
          Kilometraje  int,
          Desperfectos varchar(32),
          Estado       Estado,
          Matricula    varchar(8) NOT NULL,
          Registro     varchar(8) NOT NULL,
          Tiempo_coord int
    );
    
    ALTER TABLE Hoja ADD PRIMARY KEY (CodHoja);
    
    

    Un saludo.



  • 2

    Voy a probarlo ahora mismo, muchas gracias.





Has perdido la conexión. Reconectando a Hardlimit.