Relación de tablas

08/06/2006 - 16:33 por María Eugenia Ryan | Informe spam
Hola a todos, tengo una tabla RECIBOS con los siguientes campos:

Id_Tipo_Rec (Integer) (clave)
Num_Rec (Integer) (clave)
...

Y, además tengo la tabla APORTES con los siguientes campos:

Id_Aporte (clave)

Id_Tipo_Rec
Num_Rec
Donde Id_Tipo_Rec y Num_Rec no son obligatorios.

O sea las dos tabla se relacionan con los campos Id_Tipo_Rec, Num_Rec.
El problema es que, en la tabla APORTES, si ingreso por ej.
Id_Tipo_Rec = 0
y Num_Rec = Null
me lo permite (O sea no se relaciona con ningún registro de RECIBOS pero
además me deja inconsistente la tabla APORTES)

Lo que yo pensaba era hacer una restricción en el ingreso de datos:

([Id_tipo_Recibo] = null and [Num_Recibo] = null) or ([Id_tipo_Recibo] <>
null and [Num_Recibo] <> null)

Pero me saca los paréntesis y no me da ningún error, ¿alguien me puede tirar
alguna idea?
Gracias

María Eugenia Ryan
 

Leer las respuestas

#1 Alejandro Mesa
08/06/2006 - 16:40 | Informe spam
María,

La unica comparacion permitible contra valores null es "IS [NOT] NULL".
Puedes crear una restriccion "CHECK" a nivel de tabla.

Ejemplo:

create table dbo.t1 (
c1 int,
c2 int,
constraint chk_c1_c2 check((c1 is null and c2 is null) or (c1 is not null
and c2 is not null))
)
go

insert into dbo.t1 values(1, null)
go

drop table dbo.t1
go


AMB

"María Eugenia Ryan" wrote:

Hola a todos, tengo una tabla RECIBOS con los siguientes campos:

Id_Tipo_Rec (Integer) (clave)
Num_Rec (Integer) (clave)
...

Y, además tengo la tabla APORTES con los siguientes campos:

Id_Aporte (clave)

Id_Tipo_Rec
Num_Rec
Donde Id_Tipo_Rec y Num_Rec no son obligatorios.

O sea las dos tabla se relacionan con los campos Id_Tipo_Rec, Num_Rec.
El problema es que, en la tabla APORTES, si ingreso por ej.
Id_Tipo_Rec = 0
y Num_Rec = Null
me lo permite (O sea no se relaciona con ningún registro de RECIBOS pero
además me deja inconsistente la tabla APORTES)

Lo que yo pensaba era hacer una restricción en el ingreso de datos:

([Id_tipo_Recibo] = null and [Num_Recibo] = null) or ([Id_tipo_Recibo] <>
null and [Num_Recibo] <> null)

Pero me saca los paréntesis y no me da ningún error, ¿alguien me puede tirar
alguna idea?
Gracias

María Eugenia Ryan



Preguntas similares