38 - Restricción unique |
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 restriccionesVer solución
drop table if exist remis; 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';