Diferència entre revisions de la pàgina «P11-Creació de disparadors»
(Es crea la pàgina amb «== En esta práctica, creará disparadores de sentencia y de fila. También creará procedimientos que se llamarán desde los disparadores.== ''' 1) Las filas de la tabla…».) |
(/* 1) Las filas de la tabla JOBS almacenan los salarios mínimos y máximos permitidos para los distintos valores de JOB_ID. Le piden que escriba un código para garantizar que el salario de los empleados esté dentro del rango permitido por su tipo) |
||
(Hi ha 21 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
− | + | En esta práctica, creará disparadores de sentencia y de fila. También creará procedimientos que se llamarán desde los disparadores. | |
− | + | == 1) Las filas de la tabla JOBS almacenan los salarios mínimos y máximos permitidos para los distintos valores de JOB_ID. Le piden que escriba un código para garantizar que el salario de los empleados esté dentro del rango permitido por su tipo de trabajo, para operaciones de inserción y actualización.== | |
− | que el salario de los empleados esté dentro del rango permitido por su tipo de trabajo, | + | ''' a) Cree un procedimiento denominado CHECK_SALARY, de la siguiente forma: |
− | para operaciones de inserción y actualización. | + | |
− | a) Cree un procedimiento denominado CHECK_SALARY, de la siguiente forma: | + | i) El procedimiento acepta dos parámetros, uno para la cadena del identificador de trabajo del empleado y el otro para el salario. |
− | i) El procedimiento acepta dos parámetros, uno para la cadena del identificador | + | ii) El procedimiento utiliza el identificador de trabajo para determinar el salario mínimo y máximo para el trabajo especificado. |
− | de trabajo del empleado y el otro para el salario. | + | iii) Si el parámetro del salario, mínimo y máximo incluidos, no está dentro del rango de salarios, aparecerá una excepción |
− | ii) El procedimiento utiliza el identificador de trabajo para determinar el salario | + | de aplicación con el mensaje: |
− | mínimo y máximo para el trabajo especificado. | + | “Invalid salary <sal>.Salaries for job <jobid> must be between <min> and <max>.” |
− | iii) Si el parámetro del salario, mínimo y máximo incluidos, no está dentro del | + | Sustituya los distintos elementos del mensaje por los valores que proporcionan los parámetros y las variables rellenados |
− | rango de salarios, aparecerá una excepción de aplicación con el mensaje | + | con consultas. Guarde el archivo. |
− | “Invalid salary <sal>. Salaries for job <jobid> must | + | |
− | be between <min> and <max>.” Sustituya los distintos elementos del | + | ''' b) Cree un disparador denominado CHECK_SALARY_TRG en la tabla EMPLOYEES que arranque ante una operación INSERT o UPDATE en cada fila: |
− | mensaje por los valores que proporcionan los parámetros y las variables | + | i) El disparador debe llamar al procedimiento CHECK_SALARY para ejecutar la lógica de negocio. |
− | + | ii) El disparador debe transferir el nuevo identificador de trabajo y salario a los parámetros de procedimiento. | |
− | b) Cree un disparador denominado CHECK_SALARY_TRG en la tabla EMPLOYEES | + | |
− | que arranque ante una operación INSERT o UPDATE en cada fila: | + | ==2) Pruebe el disparador CHECK_SAL_TRG utilizando los siguientes casos:== |
− | i) El disparador debe llamar al procedimiento CHECK_SALARY para ejecutar la | + | |
− | lógica de negocio. | + | ''' a) Utilice el procedimiento EMP_PKG.ADD_EMPLOYEE para agregar a la empleada Eleanor Beh al departamento 30. ¿Qué sucede? ¿Por qué? |
− | ii) El disparador debe transferir el nuevo identificador de trabajo y salario a los | + | |
− | parámetros de procedimiento. | + | ''' b) Actualice el salario del empleado 115 a 2.000 dólares. En otra operación de actualización, cambie el identificador de trabajo del empleado a HR_REP. ¿Qué sucede en cada caso? |
− | 2) Pruebe el disparador CHECK_SAL_TRG utilizando los siguientes casos: | + | |
− | a) Utilice el procedimiento EMP_PKG.ADD_EMPLOYEE para agregar a la empleada | + | ''' c) Actualice el salario del empleado 115 a 2.800 dólares. ¿Qué sucede? |
− | Eleanor Beh al departamento 30. ¿Qué sucede? ¿Por qué? | + | |
− | b) Actualice el salario del empleado 115 a 2.000 dólares. En otra operación de | + | == 3) Actualice el disparador CHECK_SALARY_TRG para que arranque sólo cuando los valores el identificador de trabajo o el salario hayan cambiado en realidad.== |
− | actualización, cambie el identificador de trabajo del empleado a HR_REP. ¿Qué | + | |
− | sucede en cada caso? | + | ''' a) Implante la regla de negocio utilizando una cláusula WHEN para comprobar si los |
− | c) Actualice el salario del empleado 115 a 2.800 dólares. ¿Qué sucede? | + | valores JOB_ID o SALARY han cambiado. |
− | 3) Actualice el disparador CHECK_SALARY_TRG para que arranque sólo cuando los | + | |
− | valores | + | Nota: asegúrese de que la condición maneja NULL en los valores de OLD.column_name si se |
− | a) Implante la regla de negocio utilizando una cláusula WHEN para comprobar si los | + | realiza una operación INSERT; si no es así, la operación de inserción fallará. |
− | valores JOB_ID o SALARY han cambiado. | + | |
− | Nota: asegúrese de que la condición maneja NULL en los valores de | + | ''' b) Compruebe el disparador ejecutando el procedimiento EMP_PKG.ADD_EMPLOYEE con los siguientes valores de parámetros: |
− | OLD.column_name si se realiza una operación INSERT; si no es así, la | + | |
− | operación de inserción fallará. | + | - p_first_name: 'Eleanor' |
− | b) Compruebe el disparador ejecutando el procedimiento | + | - p_last name: 'Beh' |
− | EMP_PKG.ADD_EMPLOYEE con los siguientes valores de parámetros: | + | - p_Email: 'EBEH' |
− | - p_first_name: 'Eleanor' | + | - p_Job: 'IT_PROG' |
− | - p_last name: 'Beh' | + | - p_Sal: 5000 |
− | - p_Email: 'EBEH' | + | |
− | - p_Job: 'IT_PROG' | + | ''' c) Actualice a los empleados con un trabajo IT_PROG incrementando su salario en 2.000 dólares. ¿Qué sucede? |
− | - p_Sal: 5000 | + | |
− | c) Actualice a los empleados con un trabajo IT_PROG incrementando su salario en | + | ''' d) Actualice a 9.000 dólares el salario de Eleanor Beh. |
− | 2.000 dólares. ¿Qué sucede? | + | |
− | d) Actualice a 9.000 dólares el salario de Eleanor Beh. | + | Indicación: utilice una sentencia UPDATE con una subconsulta en la cláusula WHERE. ¿Qué sucede? |
− | Indicación: utilice una sentencia UPDATE con una subconsulta en la cláusula | + | |
− | WHERE. ¿Qué sucede? | + | ''' e) Cambie el trabajo de Eleanor Beh a ST_MAN utilizando otra sentencia UPDATE con una subconsulta. ¿Qué sucede? |
− | e) Cambie el trabajo de Eleanor Beh a ST_MAN utilizando otra sentencia | + | |
− | UPDATE con una subconsulta. ¿Qué sucede? | + | == 4) Se le pide que evite que se suprima a los empleados durante las horas laborables.== |
− | 4) Se le pide que evite que se suprima a los empleados durante las horas laborables. | + | |
− | a) Escriba un disparador de sentencia denominado DELETE_EMP_TRG en la tabla | + | ''' a) Escriba un disparador de sentencia denominado DELETE_EMP_TRG en la tabla EMPLOYEES para evitar que las filas se supriman durante horas laborables entre semana, es decir, de las 9:00 a.m. a las 6:00 p.m. |
− | EMPLOYEES para evitar que las filas se supriman durante horas laborables entre | + | |
− | semana, es decir, de las 9:00 a.m. a las 6:00 p.m. | + | ''' b) Intente suprimir los empleados con JOB_ID SA_REP que no estén asignados a un departamento. |
− | b) Intente suprimir los empleados con JOB_ID SA_REP que no estén asignados a | + | Indicación: empleado Grant con identificador 178. |
− | un departamento. | ||
− | Indicación: empleado Grant con identificador 178. |
Revisió de 19:47, 26 gen 2015
En esta práctica, creará disparadores de sentencia y de fila. También creará procedimientos que se llamarán desde los disparadores.
Contingut
- 1 1) Las filas de la tabla JOBS almacenan los salarios mínimos y máximos permitidos para los distintos valores de JOB_ID. Le piden que escriba un código para garantizar que el salario de los empleados esté dentro del rango permitido por su tipo de trabajo, para operaciones de inserción y actualización.
- 2 2) Pruebe el disparador CHECK_SAL_TRG utilizando los siguientes casos:
- 3 3) Actualice el disparador CHECK_SALARY_TRG para que arranque sólo cuando los valores el identificador de trabajo o el salario hayan cambiado en realidad.
- 4 4) Se le pide que evite que se suprima a los empleados durante las horas laborables.
1) Las filas de la tabla JOBS almacenan los salarios mínimos y máximos permitidos para los distintos valores de JOB_ID. Le piden que escriba un código para garantizar que el salario de los empleados esté dentro del rango permitido por su tipo de trabajo, para operaciones de inserción y actualización.
a) Cree un procedimiento denominado CHECK_SALARY, de la siguiente forma:
i) El procedimiento acepta dos parámetros, uno para la cadena del identificador de trabajo del empleado y el otro para el salario. ii) El procedimiento utiliza el identificador de trabajo para determinar el salario mínimo y máximo para el trabajo especificado. iii) Si el parámetro del salario, mínimo y máximo incluidos, no está dentro del rango de salarios, aparecerá una excepción de aplicación con el mensaje: “Invalid salary <sal>.Salaries for job <jobid> must be between <min> and <max>.” Sustituya los distintos elementos del mensaje por los valores que proporcionan los parámetros y las variables rellenados con consultas. Guarde el archivo.
b) Cree un disparador denominado CHECK_SALARY_TRG en la tabla EMPLOYEES que arranque ante una operación INSERT o UPDATE en cada fila:
i) El disparador debe llamar al procedimiento CHECK_SALARY para ejecutar la lógica de negocio. ii) El disparador debe transferir el nuevo identificador de trabajo y salario a los parámetros de procedimiento.
2) Pruebe el disparador CHECK_SAL_TRG utilizando los siguientes casos:
a) Utilice el procedimiento EMP_PKG.ADD_EMPLOYEE para agregar a la empleada Eleanor Beh al departamento 30. ¿Qué sucede? ¿Por qué?
b) Actualice el salario del empleado 115 a 2.000 dólares. En otra operación de actualización, cambie el identificador de trabajo del empleado a HR_REP. ¿Qué sucede en cada caso?
c) Actualice el salario del empleado 115 a 2.800 dólares. ¿Qué sucede?
3) Actualice el disparador CHECK_SALARY_TRG para que arranque sólo cuando los valores el identificador de trabajo o el salario hayan cambiado en realidad.
a) Implante la regla de negocio utilizando una cláusula WHEN para comprobar si los valores JOB_ID o SALARY han cambiado.
Nota: asegúrese de que la condición maneja NULL en los valores de OLD.column_name si se realiza una operación INSERT; si no es así, la operación de inserción fallará.
b) Compruebe el disparador ejecutando el procedimiento EMP_PKG.ADD_EMPLOYEE con los siguientes valores de parámetros:
- p_first_name: 'Eleanor' - p_last name: 'Beh' - p_Email: 'EBEH' - p_Job: 'IT_PROG' - p_Sal: 5000
c) Actualice a los empleados con un trabajo IT_PROG incrementando su salario en 2.000 dólares. ¿Qué sucede?
d) Actualice a 9.000 dólares el salario de Eleanor Beh.
Indicación: utilice una sentencia UPDATE con una subconsulta en la cláusula WHERE. ¿Qué sucede?
e) Cambie el trabajo de Eleanor Beh a ST_MAN utilizando otra sentencia UPDATE con una subconsulta. ¿Qué sucede?
4) Se le pide que evite que se suprima a los empleados durante las horas laborables.
a) Escriba un disparador de sentencia denominado DELETE_EMP_TRG en la tabla EMPLOYEES para evitar que las filas se supriman durante horas laborables entre semana, es decir, de las 9:00 a.m. a las 6:00 p.m.
b) Intente suprimir los empleados con JOB_ID SA_REP que no estén asignados a un departamento.
Indicación: empleado Grant con identificador 178.