Primer problema:
Una empresa de remises tiene registrada la información de sus vehículos en una tabla llamada
"remis".
1- Cree la tabla con la siguiente estructura:
create table remis(
numero serial,
patente char(6),
marca varchar(15),
modelo char(4)
);
2- Ingrese algunos registros, 2 de ellos con patente repetida y alguno con patente nula:
insert into remis(patente,marca,modelo) values('ABC123','Renault clio','1990');
insert into remis(patente,marca,modelo) values('DEF456','Peugeot 504','1995');
insert into remis(patente,marca,modelo) values('DEF456','Fiat Duna','1998');
insert into remis(patente,marca,modelo) values('GHI789','Fiat Duna','1995');
insert into remis(patente,marca,modelo) values(null,'Fiat Duna','1995');
3- Intente agregar una restricción "unique" para asegurarse que la patente del remis no tomará
valores repetidos.
No se puede porque hay valores duplicados.
4- Elimine el registro con patente duplicada y establezca la restricción.
Note que hay 1 registro con valor nulo en "patente".
5- Intente ingresar un registro con patente repetida (no lo permite)
6- Ingresar un registro con valor nulo para el campo "patente".
Lo permite.
7- Muestre la información de las restricciones
Ver solución
create table remis(
numero serial,
patente char(6),
marca varchar(15),
modelo char(4)
);
insert into remis(patente,marca,modelo) values('ABC123','Renault clio','1990');
insert into remis(patente,marca,modelo) values('DEF456','Peugeot 504','1995');
insert into remis(patente,marca,modelo) values('DEF456','Fiat Duna','1998');
insert into remis(patente,marca,modelo) values('GHI789','Fiat Duna','1995');
insert into remis(patente,marca,modelo) 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 (patente,marca,modelo)values('ABC123','Renault 11','1995');
insert into remis(patente,marca,modelo) values(null,'Renault 11','1995');
select *
from information_schema.table_constraints
where table_name = 'remis';