FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Usar IIF en check
Hola, miembros del foro.
Pues tengo una pregunta acerca de utilizar iif() dentro de una restriccion check algo como: constraint CK_UseKardex check(iif(UseKardex=1, TipoKardex is not null, TipoKardex is null)) Pues que estoy migrando desde otro Gestor de BD. a Firebird con docenas de iif() como estas pero no me funciona. Hay alguna manera de hacer esto en firebird?. Gracias de anticipadas por sus repuestas . |
#2
|
||||
|
||||
Hola
IIF() lo acepta Firebird, pero creo que solo dentro de un sql. Saludos
__________________
Siempre Novato |
#3
|
||||
|
||||
Gracias Caral.
Pero me preguntaba si existe alguna manera de lograr el mismo objetivo dentro del check en Firebird? claro con otras funciones que permita firebird. |
#4
|
||||
|
||||
Hola
No se o no conozco el check, no lo he usado. Saludos PD: es pregunta para conocedores....
__________________
Siempre Novato |
#5
|
||||
|
||||
Hola
Estaba revisando aqui para tratar de entender esto y segun entiendo lo que hace check es devolver un valor null segun el caso. Da la impresion, o por lo menos a mi me parece que hace algo similar al IFF, solo que creando una sola condicion de retorno. Lo que no entiendo es: Si es asi; por que no usar el IFF directamente ?. Solo me auto pregunto ?. Saludos
__________________
Siempre Novato |
#6
|
||||
|
||||
Bueno Caral, lo que hace el check es validar una condicion logica Check(<condicion>) y hasta antes de la versión 2.0 de Firebird si la condicion se evaluaba a NULL se tomaba como False pero a partir de esta (la 2.0) se evalua a True
Cita:
La ventaja de la de la funcion IIF es que permite hacer validaciones anidadas mas complejas y mas entedibles que si la hicieramos sin ella, pero si no hay forma de utilizar IIF o algo similar tendre que hacerlo a mano. |
#7
|
|||
|
|||
Dudas respecto a lo quieres hacer ...
Carlos:
Pues no entiendo bien a bien que es lo que quieres hacer en el check (no entiendo tu ejemplo), pero yo he utilizado el iif muy a menudo. Te pongo un par de ejemplos: En un campo calculado:
Dentro de un procedimiento almacenado:
Espero que te ayude mi código ... Saludos, Gerardo Suárez Trejo Última edición por Gallosuarez fecha: 06-09-2011 a las 03:47:45. Razón: corrección el el código ... |
#8
|
||||
|
||||
Gracias por las repuestas .
Cita:
condicion: UseKardex es = 1 Si es Verdadero: obligar el ingreso para el campo TipoKardex Si es Falso: impedir que se ingrese informacion en el campo TipoKardex. Soy nuevo en Firebird y habia creado todo mi script SQL de BD, usando checks comprobaciones a nivel de tabla con funciones IIF (pensaba que si se podia ) pero al probarlo no funciono, como decia CARAL no funcioma en checks, al parecer solo hay 2 opciones. 1.- Uso los Procedimientos almacenado, aunque mejor los triggers como sugiere GalloSuarez donde si puedo usar los IIFs. 2.- o sustituir los IIF por condiciones AND y OR, traduciendo el ejemplo seria: CHECK((UseKardex=1 AND TipoKardex is not null) or (UseKardex=0 AND TipoKardex is null)). Gracias por las respuestas, tengo que corregir mi script SQL, cometiendo fallas se aprende . |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
char_length en check no funciona | erickperez6 | Firebird e Interbase | 1 | 23-10-2010 04:40:15 |
instruccion CHECK | CHiCoLiTa | MS SQL Server | 3 | 01-03-2005 18:12:58 |
Actualizar un check | cmgenny | Firebird e Interbase | 5 | 28-03-2004 18:09:18 |
Check!! | subzero | Firebird e Interbase | 3 | 09-02-2004 23:43:04 |
Error gds consistency check... no se que | judoboy | Firebird e Interbase | 12 | 31-07-2003 19:13:33 |
|