Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-09-2008
KAYO KAYO is offline
Miembro
 
Registrado: jul 2006
Posts: 78
Poder: 18
KAYO Va por buen camino
Campos Lógicos en Firebird

Como se definen los campos tipos Lógicos en FireBird?

No aparece en la creacion de la tabla una opcion para campos Boolean.

Agradezco vuestra ayuda!!!
Responder Con Cita
  #2  
Antiguo 01-09-2008
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 17
TOPX Va camino a la fama
Traducido de The Firebird Book: A Reference for Database Developers, pág. 114:

Cita:
[sic] Firebird no tiene un tipo Booleano ("lógico").
La práctica usual es definir un dominio de un sólo caracter o SmallInt para uso genérico cuando el diseño solicite un Booleano.
La herramienta que le está dando "opciones de creación de tabla", tendrá la creación de dominios.
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #3  
Antiguo 01-09-2008
ninguno ninguno is offline
Miembro
 
Registrado: sep 2008
Posts: 45
Poder: 0
ninguno Va por buen camino
quizás algo así

Código:
CREATE DOMAIN LOGICO AS
SMALLINT
CHECK (VALUE IS NULL or VALUE = 0 OR VALUE = 1);
Responder Con Cita
  #4  
Antiguo 01-09-2008
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 17
TOPX Va camino a la fama
Es correcto.
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #5  
Antiguo 01-09-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

En dado caso sería mejor:

Código SQL [-]
create domain BOOLEAN as
  SMALLINT DEFAULT 0
  check (VALUE in (0, 1));


Saludos...
Responder Con Cita
  #6  
Antiguo 01-09-2008
ninguno ninguno is offline
Miembro
 
Registrado: sep 2008
Posts: 45
Poder: 0
ninguno Va por buen camino
Siento discrepar, pero es muy recomendable tener en cuenta el valor null, sino estás obligando a poner un valor al campo y no tiene por qué ser así. Si lo quieres hacer de esa manera, la cosa quedaría así

Código:
CREATE DOMAIN LOGICO  
AS SMALLINT 
CHECK (value is null or value in (0, 1));
Responder Con Cita
  #7  
Antiguo 01-09-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Si te fijas en mi ejemplo, el dominio maneja un valor predeterminado de 0, de esta forma si haces un insert y no especificas un valor para el campo que use este dominio, firebird automáticamente lo pondrá en 0. De esta forma no tienes que preocuparte por valores nulos...



Saludos...
Responder Con Cita
  #8  
Antiguo 01-09-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola Marcos,

Aunque no soy fan de permitir valores NULL, creo que el compañero ninguno tiene razón, pues habrá quienes deseen o requieran permitir valores nulos en un campo.

// Saludos
Responder Con Cita
  #9  
Antiguo 01-09-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Si, eso lo tengo muy presente...

Yo me refiero solo al caso que nos toca, un dominio que sirva para declarar campos de tipo Boolean (Lógicos), donde estos solo pueden tener dos valores, Falso o Verdadero (0 y 1 en el ejemplo). La verdad que no le veo mucho sentido permitir nulos en un campo de este tipo...



Saludos...
Responder Con Cita
  #10  
Antiguo 01-09-2008
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 17
TOPX Va camino a la fama
Ahí si toca como lo requiera el cliente. Porque podría estar el ejemplo de "género": Macho, Hembra e Indeterminado.

Y siendo así, entender el "lógico" que acepta nulo como "ni lo uno, ni lo otro, si no todo lo contrario".
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #11  
Antiguo 01-09-2008
ninguno ninguno is offline
Miembro
 
Registrado: sep 2008
Posts: 45
Poder: 0
ninguno Va por buen camino
Hola

Cita:
Empezado por maeyanes Ver Mensaje
Hola...

Si te fijas en mi ejemplo, el dominio maneja un valor predeterminado de 0, de esta forma si haces un insert y no especificas un valor para el campo que use este dominio, firebird automáticamente lo pondrá en 0. De esta forma no tienes que preocuparte por valores nulos...



Saludos...
Sólo una recomendación a la hora de hacer dominios: no hagas este tipo de limitaciones.

Si quieres hacer limitaciones, hazlas a nivel de campo de la tabla (con un Not null, haciendo un check, con un valor por defecto,....), no a nivel de dominio; puedes ahorrarte dolores de cabeza a la larga.
Responder Con Cita
Respuesta



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
Como usar los operadores logicos con los IF ctronx Varios 4 16-02-2012 19:13:01
variables, constantes, operadores logicos etc arespremium OOP 4 29-08-2007 13:23:48
Bdbrid con campos logicos federicorl Conexión con bases de datos 2 17-05-2006 23:14:41
Campos lógicos en Paradox Acker Conexión con bases de datos 4 28-08-2005 12:41:56
Campos Float en Firebird Kira SQL 7 12-02-2004 17:06:45


La franja horaria es GMT +2. Ahora son las 05:51:30.


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