对于定义为 RESTRICT 操作的外键,如果其破坏了参照完整性,则将在执行语句时进行缺省检查动作。如果指定了 CHECK ON COMMIT 子句,则只会在提交事务时进行该检查操作。
对于定义为 RESTRICT 操作的外键,如果其破坏了参照完整性,设置 wait_for_commit 数据库选项可以控制该行为。CHECK ON COMMIT 子句可以替换此选项。
将 wait_for_commit 设置为 Off(缺省设置),将不允许执行会导致数据库不一致的操作。例如,尝试删除仍具有雇员的部门将会失败。以下语句将出错:
DELETE FROM Departments WHERE DepartmentID = 200; |
把 wait_for_commit 设置为 On 将导致执行提交之前不对参照完整性进行检查。如果数据库处于不一致状态,将不允许执行提交操作,并报告一个错误。在此模式下,虽然数据库用户可以删除仍含有雇员的部门,但在执行以下操作之前该用户不能将更改提交到数据库:
删除或重新分配属于该部门的雇员。
将 DepartmentID 行插回到 Departments 表中。
回退事务,撤消 DELETE 操作。
执行 INSERT 时检查完整性
执行 DELETE 或 UPDATE 时检查完整性
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |