Documente Academic
Documente Profesional
Documente Cultură
3. What is the most important thing to check before creating a database trigger?
1. When creating a DML statement trigger on a table, what are the components that you must
define?
2. A business rule states that each time one or more employees are added to the EMPLOYEES
table, an audit record must also be created. This rule could be enforced using application
code, but we have decided to enforce it using a DML statement trigger..
Lab_13_Sp17_208A_key.doc
C. Test your trigger by inserting a row into EMPLOYEES, then querying the
AUDIT_TABLE to see that it contains a row.
D. . Make sure the trigger does not fire with a DELETE by deleting the employee you
just entered. Recheck the AUDIT_TABLE to make sure that there is not another new row.
3. True or false? A row trigger fires at least once even if no rows are affected. What is the
difference between a statement trigger and a row trigger?
4. Imagine that the following four DML triggers have been defined on the employees table:
a. a BEFORE INSERT statement trigger,
b. a BEFORE UPDATE statement trigger,
c. an AFTER DELETE statement trigger.
An UPDATE statement updates three employee rows. How many times will each
trigger fire?
1. Retrieve the code for the AFTER INSERT trigger you created in the previous practice,
question 2B. If you have lost the code, here it is again:
2. Modify this trigger so that a DELETE on the EMPLOYEES table will fire the same
trigger. Use the conditional predicates so an INSERT adds a row to the AUDIT_EMP table
with Inserted for the action column and a DELETE adds a row with Deleted in the
action column. Save the script and test your trigger by inserting an employee row
www.oracle.com/academy and then deleting the same row, querying the AUDIT_EMP
table each time.
3. Add a new column called emp_id to the AUDIT_EMP table. This column will contain the
Lab_13_Sp17_208A_key.doc
employee id of the worker whose record was inserted or deleted. Modify your trigger to be a row
trigger so it will fire once for each row affected. The INSERTs into the AUDIT_EMP table should
now include the employee id of the affected employee. INSERT and DELETE one or more
employees. Query the AUDIT_EMP table to see the audit trail.
2. Imagine that the following audit table has been created in your schema:
Lab_13_Sp17_208A_key.doc
5. Create a row trigger that displays the maximum salary in the EMPLOYEES table
and is fired immediately before an employees salary is updated.
6. Test your trigger by attempting to update the salary of employee_id 100 to a new value of 25000.
What happens and why?
1. Query the data dictionary to display information about all the triggers you
created in earlier practices. The query should display the names, triggering event,
trigger type, kind of object the trigger is on (table, view etc), name of the table or
view, and the status.
2. Disable one of your triggers and re-query the data dictionary view. What is the
triggers new status?
3. List the source code of the trigger that you just disabled.
4. Remove the trigger from the database and re-query the data dictionary to check
that it has been removed.
Lab_13_Sp17_208A_key.doc