Validación

11/02/2005 - 01:05 por Omar Flores | Informe spam
Hola tengo las siguientes tablas

Articulos
pk id (Autoincremento)
id_artuculo
fk rfc_proveedor
descripcion
existencia

Proveedores
pk rfc_proveedor
nombre
direccion
Necesito insertar datos a la tabla Articulos en esta se puede tener que un
id_articulo pertenezca a varios proveedores, como puedo validar que al
introducir un id_artuculo con un corespondiente rfc_proveedor ya no se
vuelva a repetir. Es decir

Art1 -> proveedor1
Art1 -> proveedor2

pero si intento meter Art1 -> proveedor1 me marque que ya existe.

Espero haberme dado a entender, muchas gracias por su ayuda.

Preguntas similare

Leer las respuestas

#1 MAXI
11/02/2005 - 01:10 | Informe spam
Hola, una opcion seria creando un indice unico por esas 2 columnas con lo
cual no permitira valores duplicados. La otra opcion (no me gusta mucho) es
via Triggers



Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

MSN:
"Omar Flores" escribió en el mensaje
news:
Hola tengo las siguientes tablas

Articulos
pk id (Autoincremento)
id_artuculo
fk rfc_proveedor
descripcion
existencia

Proveedores
pk rfc_proveedor
nombre
direccion
Necesito insertar datos a la tabla Articulos en esta se puede tener que un
id_articulo pertenezca a varios proveedores, como puedo validar que al
introducir un id_artuculo con un corespondiente rfc_proveedor ya no se
vuelva a repetir. Es decir

Art1 -> proveedor1
Art1 -> proveedor2

pero si intento meter Art1 -> proveedor1 me marque que ya existe.

Espero haberme dado a entender, muchas gracias por su ayuda.




Respuesta Responder a este mensaje
#2 Isaías
11/02/2005 - 02:07 | Informe spam
Hola

Aparte de lo que el buen Maxi recomienda, para que "te
avise" que ya existe, suponiendo que lo hagas via STORE
PROCEDURE.

IF EXISTS(SELECT .)
BEGIN
SELECT 'La relacion ya existe'
RETURN(0)
END
Respuesta Responder a este mensaje
#3 Alejandro Mesa
11/02/2005 - 15:25 | Informe spam
Omar,

Otra forma seria agregar una restriccion a la tabla de tipo unique (sql
server implementa esto creando un indice nonclustered (por defecto, si no se
especifica lo contrario) unique, que es lo que Maxi recomendo). La ventaja de
tener un constraint es que esta puede ser referenciada como clave foranea
desde otra tabla.

Ejemplo:

use northwind
go

create table t (
colA int not null,
colB int not null,
)
go

create unique nonclustered index ix_nc_u_t_calA_colB on t(colA, colB)
go

insert into t values(1, 1)
insert into t values(2, 1)
go

insert into t values(1, 1)
go

create table s (
colA int not null,
colB int not null,
constraint fk_s_t foreign key (colA, colB) references t(colA, colB)
)
go

drop index t.ix_nc_u_t_calA_colB
go

alter table t
with check add constraint u_t_colA_colB unique (colA, colB)
go

insert into t values(1, 1)
go

create table s (
colA int not null,
colB int not null,
constraint fk_s_t foreign key (colA, colB) references t(colA, colB)
)
go

insert into s values(1, 1)
go

select * from t
select * from s
go

drop table t, s
go


AMB

"Omar Flores" wrote:

Hola tengo las siguientes tablas

Articulos
pk id (Autoincremento)
id_artuculo
fk rfc_proveedor
descripcion
existencia

Proveedores
pk rfc_proveedor
nombre
direccion
Necesito insertar datos a la tabla Articulos en esta se puede tener que un
id_articulo pertenezca a varios proveedores, como puedo validar que al
introducir un id_artuculo con un corespondiente rfc_proveedor ya no se
vuelva a repetir. Es decir

Art1 -> proveedor1
Art1 -> proveedor2

pero si intento meter Art1 -> proveedor1 me marque que ya existe.

Espero haberme dado a entender, muchas gracias por su ayuda.





Respuesta Responder a este mensaje
#4 Alejandro Mesa
11/02/2005 - 15:31 | Informe spam
Correccion,

Si se puede referenciar una columna(s) con un indice unique como clave
foranea desde otra tabla.

create table s (
colA int not null,
colB int not null,
constraint fk_s_t foreign key (colA, colB) references t(colA, colB)



Lo anterior no fallara.


AMB


"Alejandro Mesa" wrote:

Omar,

Otra forma seria agregar una restriccion a la tabla de tipo unique (sql
server implementa esto creando un indice nonclustered (por defecto, si no se
especifica lo contrario) unique, que es lo que Maxi recomendo). La ventaja de
tener un constraint es que esta puede ser referenciada como clave foranea
desde otra tabla.

Ejemplo:

use northwind
go

create table t (
colA int not null,
colB int not null,
)
go

create unique nonclustered index ix_nc_u_t_calA_colB on t(colA, colB)
go

insert into t values(1, 1)
insert into t values(2, 1)
go

insert into t values(1, 1)
go

create table s (
colA int not null,
colB int not null,
constraint fk_s_t foreign key (colA, colB) references t(colA, colB)
)
go

drop index t.ix_nc_u_t_calA_colB
go

alter table t
with check add constraint u_t_colA_colB unique (colA, colB)
go

insert into t values(1, 1)
go

create table s (
colA int not null,
colB int not null,
constraint fk_s_t foreign key (colA, colB) references t(colA, colB)
)
go

insert into s values(1, 1)
go

select * from t
select * from s
go

drop table t, s
go


AMB

"Omar Flores" wrote:

> Hola tengo las siguientes tablas
>
> Articulos
> pk id (Autoincremento)
> id_artuculo
> fk rfc_proveedor
> descripcion
> existencia
>
> Proveedores
> pk rfc_proveedor
> nombre
> direccion
> Necesito insertar datos a la tabla Articulos en esta se puede tener que un
> id_articulo pertenezca a varios proveedores, como puedo validar que al
> introducir un id_artuculo con un corespondiente rfc_proveedor ya no se
> vuelva a repetir. Es decir
>
> Art1 -> proveedor1
> Art1 -> proveedor2
>
> pero si intento meter Art1 -> proveedor1 me marque que ya existe.
>
> Espero haberme dado a entender, muchas gracias por su ayuda.
>
>
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida