FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Usando la cláusula LIKE
Hola.
Estoy migrando una base de datos construirda en MS-SQLServer 7 a InterBase (7). Tengo el siguiente DDL: CREATE TABLE demo( idcad CHAR(2) CONTRAINT nombrerestriccion CHECK (idcad LIKE '[0-1][1-5]') ); lo cual significa que el campo idcad sólo puede tener los caracteres 0 y 1 en la primera posición, y del 1 al 5 en la segunda. Ahora, cuando creo esta tabla en InterBase, la creación se produce sin problemas, sin embargo la restricción CHECK no funciona. He tratado de interpretar la sintaxis tal como se encuentra en la referencia el lenguaje, y también he buscado ejemplos, pero todavía no doy con la solución. Cómo puedo hacer que funcione? Gracias.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. |
#2
|
||||
|
||||
Ya tengo una respuesta:
Si escribo el script DDL como el siguiente sí funciona: CREATE TABLE demo( idcad CHAR(2) CHECK (SUBSTR(idcad, 1, 1) IN ('0', '1') AND SUBSTR(idcad, 2, 2) IN ('1', '2', '3', '4', '5')) ); Ahora tengo otra duda. Puedo definir en InterBase conjuntos de caracteres como en Delphi, tal que en vez de poner una larga lista como ('1', '2', '3', '4', '5'), pudiera yo escribir algo como: CREATE TABLE demo( idcad CHAR(2) CHECK (SUBSTR(idcad, 1, 1) IN set_1 AND SUBSTR(idcad, 2, 2) IN set_2) ); ? Gracias por su atención.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. |
|
|
|