Databases
T02-001- Inserción de registros.
Enunciado
Como hemos señalado anteriormente, al hacer un
INSERTen el que no se especifiquen los valores de todos los campos, se obtendrá el valorNULLen aquellos campos que no se han indicado. Por lo tanto, es obligatorio asignar un valor, al menos, a aquellos atributos que no pueden serNULL.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 sentenciaDESCRIBE.
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) 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
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)

