文档详情

Oracle11g第06讲事务及锁.ppt

发布:2019-12-24约2.7万字共50页下载文档
文本预览下载声明
Committing Changes (continued) The slide example deletes a row from the EMPLOYEES table and inserts a new row into the DEPARTMENTS table. It then makes the change permanent by issuing the COMMIT statement. Example Remove departments 290 and 300 in the DEPARTMENTS table, and update a row in the COPY_EMP table. Make the data change permanent. DELETE FROM departments WHERE department_id IN (290, 300); 2 rows deleted. UPDATE copy_emp SET department_id = 80 WHERE employee_id = 206; 1 row updated. COMMIT; Commit Complete. Instructor Note Use this example to explain how COMMIT ensures that two related operations occur together or not at all. In this case, COMMIT prevents empty departments from being created. Rolling Back Changes Discard all pending changes by using the ROLLBACK statement. Following a ROLLBACK statement: Data changes are undone. The previous state of the data is restored. The locks on the affected rows are released. Example While attempting to remove a record from the TEST table, you can accidentally empty the table. You can correct the mistake, reissue the proper statement, and make the data change permanent. DELETE FROM test; 25,000 rows deleted. ROLLBACK; Rollback complete. DELETE FROM test WHERE id = 100; 1 row deleted. SELECT * FROM test WHERE id = 100; No rows selected. COMMIT; Commit complete. Statement-Level Rollbacks Part of a transaction can be discarded by an implicit rollback if a statement execution error is detected. If a single DML statement fails during execution of a transaction, its effect is undone by a statement-level rollback, but the changes made by the previous DML statements in the transaction are not discarded. They can be committed or rolled back explicitly by the user. Oracle issues an implicit commit before and after any data definition language (DDL) statement. So, even if your DDL statement does not execute successfully, you
显示全部
相似文档