Check condicional

05/07/2006 - 17:04 por Andrey | Informe spam
Hola Amigos...

me parecio haber leido o talves malinterprete que se puede construir check
condicionales, que es justo lo que necesito.

yo tengo una tabla en la que no deseo que se generen negativos y le tengo un
check. pero ahora requiero que esa restriccion solo opere para cierto grupo
de registros, osea que actue dependiendo el valor de otro campo.

Espero me puedan ayudar.
trabajo con sqlserver 2000.

Gracias.

Preguntas similare

Leer las respuestas

#11 Andrey
06/07/2006 - 18:35 | Informe spam
Excelente...

Mil Gracias Alejandro.



"Alejandro Mesa" escribió:

Andrey,

Paratamos de que la expresion "case" devuelve siempre un valor. En el
ejemplo expuesto uso 0 para evaluar "correcto" y 1 para "incorrecto", por lo
que el resultado de la expresion "case" lo comparo contra 0.

create table t1 (
c1 char(5) not null,
c5 int not null,
constraint ck_t1_c5 check (
case
when c1 = '00001' then 0 -- correcto
else
case
when c5 >= 0 then 0 -- correcto
else 1 -- incorrecto, pues c1 != '00001' y c5 < 0 (valor negativo)
end
end = 0 -- aqui comparo que el resultado de la expresion "case" sea igual a 0
)
)
go

insert into t1 values('00001', -1)
go

insert into t1 values('00001', 2)
go

insert into t1 values('00005', -1)
go

select * from t1
go

drop table t1
go


AMB



"Andrey" wrote:

> Muchas Gracias Alejandro.
>
> Parece que no entiendo muy bien tu ejemplo.
> Como lo aplico si C5 es el campo que no debe generar negativo, pero si el
> valor del campo c1 es diferente de '00001'.
>
> Gracias, de nuevo.
>
>
> "Alejandro Mesa" escribió:
>
> > Andrey,
> >
> > Pudieras intentar usando una expresion "case".
> >
> > Ejemplo:
> >
> > create table t1 (
> > c1 int not null,
> > c2 int not null,
> > constraint ck_t1_c2 check(case when c1 between 1 and 5 then case when c2 < 0
> > then 1 else 0 end else 0 end = 0)
> > )
> > go
> >
> > insert into t1 values(10, -1)
> > go
> >
> > insert into t1 values(1, -1)
> > go
> >
> > select * from t1
> > go
> >
> > drop table t1
> > go
> >
> >
> > AMB
> >
> >
> > "Andrey" wrote:
> >
> > > Hola Amigos...
> > >
> > > me parecio haber leido o talves malinterprete que se puede construir check
> > > condicionales, que es justo lo que necesito.
> > >
> > > yo tengo una tabla en la que no deseo que se generen negativos y le tengo un
> > > check. pero ahora requiero que esa restriccion solo opere para cierto grupo
> > > de registros, osea que actue dependiendo el valor de otro campo.
> > >
> > > Espero me puedan ayudar.
> > > trabajo con sqlserver 2000.
> > >
> > > Gracias.
> > >
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida