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

#6 Andrey
05/07/2006 - 18:11 | Informe spam
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.
>
Respuesta Responder a este mensaje
#7 Andrey
05/07/2006 - 18:14 | Informe spam
Gracias Maxi...

la voy a implementar.

Muchas Gracias.


"Maxi" escribió:

Hola, en sql se puede hacer tanto en la 2000 como en la 2005, para hacer
esto podes implementar una funcion de usuario UDF y luego se la aplicas al
check


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Andrey" escribió en el mensaje
news:
> 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.
>



Respuesta Responder a este mensaje
#8 Fredy Rivera
05/07/2006 - 18:56 | Informe spam
Capital City... jejejeje

Cualquier cosa, con gusto, desde que te pueda colaborar!!!

Saludos desde Colombia...

Fredy (co)


"Andrey" wrote:

Gracias Fredy...

yo tambien soy de Colombia. de Medellin, vos de que parte sos.




"Fredy Rivera" escribió:

> Por lo menos en SQL Server 2005 se puede...
> No sabria decirte (no recuerdo haberlo visto) en SQL 2000...
>
> La mejor opcion seria hacer la prueba!!!
>
>
> Saludos desde Colombia...
>
> Fredy (Co)
>
>
> "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.
> >
Respuesta Responder a este mensaje
#9 Alejandro Mesa
05/07/2006 - 19:04 | Informe spam
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.
> >
Respuesta Responder a este mensaje
#10 Andrey
06/07/2006 - 18:33 | Informe spam
Ok...

lo tendre muy en cuenta.
Gracias.


"Fredy Rivera" escribió:

Capital City... jejejeje

Cualquier cosa, con gusto, desde que te pueda colaborar!!!

Saludos desde Colombia...

Fredy (co)


"Andrey" wrote:

> Gracias Fredy...
>
> yo tambien soy de Colombia. de Medellin, vos de que parte sos.
>
>
>
>
> "Fredy Rivera" escribió:
>
> > Por lo menos en SQL Server 2005 se puede...
> > No sabria decirte (no recuerdo haberlo visto) en SQL 2000...
> >
> > La mejor opcion seria hacer la prueba!!!
> >
> >
> > Saludos desde Colombia...
> >
> > Fredy (Co)
> >
> >
> > "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.
> > >
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida