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ónALTER 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';