43 - Restricciones: eliminación (alter table - drop constraint)


Primer problema:

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

 


Retornar