第八十四章 SQL命令 UPDATE(三)
参照完整性
如果没有指定%NOCHECK, IRIS将使用系统范围的配置设置来确定是否执行外键引用完整性检查;
默认值是执行外键引用完整性检查。
可以在系统范围内设置此默认值,如外键引用完整性检查中所述。
要确定当前系统范围的设置,调用$SYSTEM.SQL.CurrentSettings()。
此设置不适用于用NOCHECK关键字定义的外键。
在操作期间,对于每个具有更新字段值的外键引用,都会在被引用表中的旧(更新前)引用行和新(更新后)引用行上获得共享锁。
这些行在执行引用完整性检查和更新行时被锁定。
然后释放锁(直到事务结束才持有锁)。
这确保了引用的行不会在引用完整性检查和更新操作完成之间发生更改。
锁定旧行可以确保在可能的UPDATE回滚之前不会更改所引用的行。
锁定新行可以确保引用的行不会在引用完整性检查和更新操作完成之间发生更改。
如果对CASCADE、或SET DEFAULT定义的外键字段执行了带有的操作,则相应的更改外键表的引用操作也会使用。
原子性
默认情况下,、、和是原子操作。 要么成功完成,要么回滚整个操作。 如果任何指定的行不能更新,则不更新指定的行,数据库将恢复到发出之前的状态。
可以通过调用来修改SQL中当前进程的这个默认值。 您可以通过调用



.png)
.png)
