Oracle - Alteraciones de tablas

 
Vista:
sin imagen de perfil
Val: 5
Ha disminuido su posición en 4 puestos en Oracle (en relación al último mes)
Gráfica de Oracle

Alteraciones de tablas

Publicado por rodic (3 intervenciones) el 19/01/2019 20:33:17
Hola a todos, estoy intentando hacer una serie de modificaciones en unas tablas y no consigo ejecutarlas bien a ver si me podéis echar una mano porque ando algo perdido, estoy empezando en esto por lo que os pido que seáis pacientes conmigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
CREATE TABLE  "PROFESORES"
   (	"NIF_PROFESOR" VARCHAR2(20) NOT NULL ENABLE,
	"NOMBRE_PROFESOR" VARCHAR2(20),
	"APELLIDO1_PROFESOR" VARCHAR2(20),
	"APELLIDO2_PROFESOR" VARCHAR2(20),
	"DIRECCION" VARCHAR2(20),
	"TITULACION" VARCHAR2(20),
	"SALARIO" NUMBER(5,0) NOT NULL ENABLE,
	 CONSTRAINT "PK_PROFESORES" PRIMARY KEY ("NIF_PROFESOR") ENABLE,
	 UNIQUE ("NOMBRE_PROFESOR") ENABLE
   ) ;
 
CREATE TABLE  "CURSOS"
   (	"CODIGO_CURSO" VARCHAR2(20) NOT NULL ENABLE,
	"NOMBRE_CURSO" VARCHAR2(20),
	"NOMBRE_PROFESOR" VARCHAR2(20),
	"MAX_ALUMNOS" NUMBER(2,0),
	"FECHA_INICIO" DATE NOT NULL ENABLE,
	"FECHA_FINAL" DATE,
	"HORAS" NUMBER(4,0),
	 CONSTRAINT "CUR_FEC_CK" CHECK (Fecha_Inicio<Fecha_Final) ENABLE,
	 CONSTRAINT "PK_CURSOS" PRIMARY KEY ("CODIGO_CURSO") ENABLE,
	 UNIQUE ("NOMBRE_CURSO") ENABLE,
	 UNIQUE ("NOMBRE_PROFESOR") ENABLE
   ) ;ALTER TABLE  "CURSOS" ADD CONSTRAINT "FK_NOMBRE_PROFESOR" FOREIGN KEY ("NOMBRE_PROFESOR")
	  REFERENCES  "PROFESORES" ("NOMBRE_PROFESOR") ENABLE;
 
CREATE TABLE  "ALUMNOS"
   (    "NIF" VARCHAR2(20),
    "NOMBRE" VARCHAR2(20),
    "APELLIDO1" VARCHAR2(20),
    "APELLIDO2" VARCHAR2(20),
    "NOMBRE_CURSO" VARCHAR2(20),
    "DIRECCION" VARCHAR2(20),
    "SEXO" VARCHAR2(1),
    "FECHA_DE_NACIMIENTO" DATE,
    "CODIGO_CURSO" VARCHAR2(20),
     CHECK (sexo in('M','H')) ENABLE,
     PRIMARY KEY ("NIF") ENABLE,
     CONSTRAINT "FK_NOMBRE_CURSO" FOREIGN KEY ("NOMBRE_CURSO")
     REFERENCES  "CURSOS" ("NOMBRE_CURSO") ENABLE
   ) ;

A partir de aquí necesito realizar las siguientes modificaciones:

1. Elimina la restricción que controla los valores que puede tomar el atributo Sexo.

1
ALTER TABLE Alumnos DROP CONSTRAINT check;

2. Cambia la clave primaria de la tabla PROFESORES por Nombre y Apellidos.

1
2
ALTER TABLE Profesores DROP PRIMARY KEY
	(CONSTRAINT PROFESORES PRIMARY KEY(nombre,apellidos));


Como véis lo he intentado con lo que he escrito pero me da errores.

Muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Víctor
Val: 25
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Alteraciones de tablas

Publicado por Víctor (20 intervenciones) el 07/02/2019 15:22:53
Buenas,

Para el punto 1 Elimina la restricción que controla los valores que puede tomar el atributo Sexo.
En oracle si no se especifica el nombre del CHECK el asigna automáticamente un nombre genérico por ej.: SYS_C00513216

Por lo tanto tu sentencia para eliminar el check si obligatoriamente debe especificar el nombre del check a eliminar, por ej.:

alter table ALUMNOS drop constraint SYS_C00513216;

Para el punto 2 Cambia la clave primaria de la tabla PROFESORES por Nombre y Apellidos.
La sentencia correcta sería;

alter table PROFESORES drop constraint PK_PROFESORES cascade;
alter table PROFESORES add constraint pk_profesores primary key (NOMBRE_PROFESOR, APELLIDO1_PROFESOR, APELLIDO2_PROFESOR);



Espero te sirva,
Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar