Primer problema:
Una empresa de remises tiene registrada la información de sus vehículos en una tabla llamada
"remis".
1- Elimine la tabla si existe:
if object_id('remis') is not null
drop table remis;
2- Cree la tabla con la siguiente estructura:
create table remis(
numero tinyint identity,
patente char(6),
marca varchar(15),
modelo char(4)
);
3- Ingrese algunos registros, 2 de ellos con patente repetida y alguno con patente nula:
insert into remis values('ABC123','Renault clio','1990');
insert into remis values('DEF456','Peugeot 504','1995');
insert into remis values('DEF456','Fiat Duna','1998');
insert into remis values('GHI789','Fiat Duna','1995');
insert into remis values(null,'Fiat Duna','1995');
4- Intente agregar una restricción "unique" para asegurarse que la patente del remis no tomará
valores repetidos.
No se puede porque hay valores duplicados.
5- Elimine el registro con patente duplicada y establezca la restricción.
Note que hay 1 registro con valor nulo en "patente".
6- Intente ingresar un registro con patente repetida (no lo permite)
7- Intente ingresar un registro con valor nulo para el campo "patente".
No lo permite porque la clave estaría duplicada.
8- Muestre la información de las restricciones:
exec sp_helpconstraint remis;
Ver solución
if object_id('remis') is not null
drop table remis;
create table remis(
numero tinyint identity,
patente char(6),
marca varchar(15),
modelo char(4)
);
insert into remis values('ABC123','Renault clio','1990');
insert into remis values('DEF456','Peugeot 504','1995');
insert into remis values('DEF456','Fiat Duna','1998');
insert into remis values('GHI789','Fiat Duna','1995');
insert into remis values(null,'Fiat Duna','1995');
alter table remis
add constraint UQ_remis_patente
unique(patente);
delete from remis where numero=3;
alter table remis
add constraint UQ_remis_patente
unique(patente);
insert into remis values('ABC123','Renault 11','1995');
insert into remis values(null,'Renault 11','1995');
exec sp_helpconstraint remis;