Databases

T02-001- Inserción de registros.

Enunciado

Si trabajamos con livesql, cada vez que iniciamos sesión, debemos cargar el script HR, perdiendo cualquier modificación que hayamos realizado previamente en los datos.

En JuezLTI ocurre algo parecido: cada vez que se lanza una respuesta se reinician los datos.

Ejemplo

Si quisiéramos insertar la dirección del instituto Carlos III en la tabla locations del esquema HR. Los datos que habría que insertar serían:

LOCATION_ID STREET_ADDRESS POSTAL_CODE CITY STATE_PROVINCE COUNTRY_ID
3300 C/Carlos III, 3 30201 Cartagena Murcia ES

INSERT INTO locations (LOCATION_ID, STREET_ADDRESS, POSTAL_CODE, CITY, STATE_PROVINCE, COUNTRY_ID)
VALUES (3300, 'C/Carlos III, 3', 30201, 'Cartagena', 'Murcia', 'ES');

Si nos fijamos, el COUNTRY_ID es 'ES', pero, entre los datos que se incluyen en el esquema HR, no se encuentra ningún país en el que el valor del atributo COUNTRY_ID sea 'ES'. Lo que provocaría un fallo: ORA-02291: restricción de integridad violada - no se encuentra la clave padre ORA-06512.

Básicamente, ese fallo significa que no podemos indicar que Cartagena está relacionada con el país cuyo código es 'ES' si en la base de datos no existe ningún país con ese código.

Por eso, deberíamos insertar en primer lugar los datos de España en la tabla countries del esquema HR antes de poder insertar el Carlos III como dirección.

INSERT INTO countries (COUNTRY_ID, COUNTRY_NAME, REGION_ID)
VALUES ('ES', 'España', 1);

Ambas sentencias deben ser finalizadas con ;

Ejercicio

Inserta tus datos en el departamento de Desarrollo Web.

DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID
280 Desarrollo Web 103 1700

Los datos de tu contratación son:

EMPLOYEE_ID HIRE_DATE JOB_ID SALARY COMMISSION_PCT MANAGER_ID
220 CURRENT_DATE IT_PROG 1000 0.1 103

El resto de datos (nombre, apellidos, ...) los tienes que rellenar con tus propios datos, teniendo en cuenta el tamaño máximo permitido para cada atributo y el resto de restricciones.

Nota: recuerda que en Juez-LTI debes cualificar las tablas con el esquema HR y que el departamento hay que volver a crearlo.

Tipo

DML

Solución


												
INSERT INTO HR.DEPARTMENTS (DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID) VALUES (280, 'Desarrollo Web', 103, 1700); INSERT INTO HR.EMPLOYEES (EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL, PHONE_NUMBER, HIRE_DATE, JOB_ID, SALARY, COMMISSION_PCT, MANAGER_ID, DEPARTMENT_ID) VALUES (220, 'Alberto', 'Sierra', 'albsierra@carlosiii.es', '624 456789', CURRENT_DATE, 'IT_PROG', 1000, 0.1, 103, 280);

Prueba


											
SELECT DEPARTMENT_ID, DEPARTMENT_NAME, EMPLOYEE_ID, HIRE_DATE, JOB_ID, SALARY, COMMISSION_PCT, EMPLOYEES.MANAGER_ID FROM HR.DEPARTMENTS JOIN HR.EMPLOYEES USING (DEPARTMENT_ID) WHERE EMPLOYEES.MANAGER_ID = 103

Librerías (Onfly databases)