43 - Restricciones: eliminación (alter table - drop constraint) |
Una playa de estacionamiento almacena cada día los datos de los vehículos que ingresan en la tabla llamada "vehiculos".
1- Setee el formato de "date" para que nos muestre hora y minutos:
ALTER SESSION SET NLS_DATE_FORMAT = 'HH24:MI';
2- Elimine la tabla y créela con la siguiente estructura:
drop table vehiculos; create table vehiculos( patente char(6) not null, tipo char(1),--'a'=auto, 'm'=moto horallegada date not null, horasalida date );
3- Establezca una restricción "check" que admita solamente los valores "a" y "m" para el campo "tipo":
alter table vehiculos
add constraint CK_vehiculos_tipo
check (tipo in ('a','m'));
4- Agregue una restricción "primary key" que incluya los campos "patente" y "horallegada"
5- Ingrese un vehículo.
6- Intente ingresar un registro repitiendo la clave primaria.
7- Ingrese un registro repitiendo la patente pero no la hora de llegada.
8- Ingrese un registro repitiendo la hora de llegada pero no la patente.
9- Vea todas las restricciones para la tabla "vehiculos"
aparecen 4 filas, 3 correspondientes a restricciones "check" y 1 a "primary key". Dos de las restricciones de control tienen nombres dados por Oracle.
12- Elimine la restricción "primary key"
13- Vea si se ha eliminado.
Ahora aparecen 3 restricciones.
14- Elimine la restricción de control que establece que el campo "patente" no sea nulo (busque el nombre consultando "user_constraints").
15- Vea si se han eliminado.
16- Vuelva a establecer la restricción "primary key" eliminada.
17- La playa quiere incluir, para el campo "tipo", además de los valores permitidos "a" (auto) y "m" (moto), el caracter "c" (camión). No puede modificar la restricción, debe eliminarla y luego redefinirla con los 3 valores.
18- Consulte "user_constraints" para ver si la condición de chequeo de la restricción "CK_vehiculos_tipo" se ha modificado.
Ver solución
ALTER SESSION SET NLS_DATE_FORMAT = 'HH24:MI';
drop table vehiculos;
create table vehiculos(
patente char(6) not null,
tipo char(1),--'a'=auto, 'm'=moto
horallegada date not null,
horasalida date
);
alter table vehiculos
add constraint CK_vehiculos_tipo
check (tipo in ('a','m'));
alter table vehiculos
add constraint PK_vehiculos
primary key(patente,horallegada);
insert into vehiculos values('SDR456','a','10:10',null);
insert into vehiculos values('SDR456','m','10:10',null);
insert into vehiculos values('SDR456','m','12:20',null);
insert into vehiculos values('SDR111','m','10:10',null);
select constraint_name, constraint_type, search_condition from user_constraints
where table_name='VEHICULOS';
alter table vehiculos
drop constraint PK_vehiculos;
select constraint_name, constraint_type, search_condition from user_constraints
where table_name='VEHICULOS';
select constraint_name, constraint_type, search_condition from user_constraints
where table_name='VEHICULOS';
alter table vehiculos
add constraint PK_vehiculos
primary key(patente,horallegada);
alter table vehiculos
drop constraint CK_vehiculos_tipo;
alter table vehiculos
add constraint CK_vehiculos_tipo
check (tipo in ('a','m','c'));
select search_condition from user_constraints
where table_name='VEHICULOS' and
constraint_name='CK_VEHICULOS_TIPO';