Databases

T02-001- Inserción de registros.

Enunciado

Como hemos señalado anteriormente, al hacer un INSERT en el que no se especifiquen los valores de todos los campos, se obtendrá el valor NULL en aquellos campos que no se han indicado. Por lo tanto, es obligatorio asignar un valor, al menos, a aquellos atributos que no pueden ser NULL.

Ejemplo:

En la siguiente sentencia no se ha especificado el valor de uno de los atributos que no puede ser NULL:

INSERT INTO employees(EMPLOYEE_ID, LAST_NAME, EMAIL, HIRE_DATE)
VALUES (220, 'Apellidos', 'email@carlosiii.es', CURRENT_DATE);

 

** ORA-01400: cannot insert NULL into ("EMPLOYEES"."JOB_ID") **

Deberíamos averiguar cuáles son los atributos que no pueden ser NULL. Para ello, podemos utilizar la sentencia DESCRIBE.

DESCRIBE employees;

El resultado nos muestra los atributos de la tabla, de los que extraemos aquellos para los que no se permite el valor NULL.

Column Null? Type
EMPLOYEE_ID NOT NULL NUMBER(6,0)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)

Podemos comprobar que nos faltaría añadir el valor del atributo JOB_ID.

INSERT INTO employees(EMPLOYEE_ID, LAST_NAME, EMAIL, HIRE_DATE, JOB_ID)
VALUES (220, 'Apellidos', 'email@carlosiii.es', CURRENT_DATE, 'IT_PROG');

Ejercicio:

A la siguiente sentencia le falta algún atributo obligatorio

INSERT INTO HR.job_history(EMPLOYEE_ID, START_DATE, END_DATE, DEPARTMENT_ID)
VALUES (120, CURRENT_DATE - 730, CURRENT_DATE, 20);

Añade el atributo que falta para que la sentencia se ejecute correctamente. El valor del atributo puede ser cualquiera que cumpla con la restricción de integridad establecida sobre ese atributo.

Tipo

DML

Solución


												
INSERT INTO HR.job_history(EMPLOYEE_ID, START_DATE, END_DATE, DEPARTMENT_ID, JOB_ID) VALUES (120, CURRENT_DATE - 730, CURRENT_DATE, 20, 'IT_PROG');

Prueba


											
SELECT EMPLOYEE_ID, START_DATE, END_DATE, DEPARTMENT_ID FROM HR.job_history WHERE EMPLOYEE_ID = 120

Librerías (Onfly databases)