数据操作语言 (DML) 操作包括插入、删除、更新和查询。对于所有此类操作,表级快照版本控制允许在任意给定表上使用一个写入程序和多个读取程序。
在表级快照版本控制中:
第一个在写入模式下打开表的事务会获取对该表的访问权限。第二个尝试在写入模式下打开该表的事务会收到错误。在当前事务中,任何其它向该表中写入数据的尝试都会失败。事务可以继续,但只能执行读取操作或对其它表执行写入操作。
SAP IQ 支持共享、写入和独占锁定排入队列,允许您将表锁定指定的一段时间。可以同时对多个表执行写锁定。
为避免因后续 DML 语句导致的将来版本错误,请使用 LOCK TABLE 语句对计划修改的一个表或一组表保持写锁定。
如果发生死锁,被阻塞的最后一个 LOCK TABLE 语句常常会回退,系统会将有关所发生死锁的形式的错误返回给该事务。
在某些情况下,必须发出 COMMIT 或 ROLLBACK 语句。例如,当 DML 语句因完整性约束原因而失败时,需要显式执行 COMMIT 或 ROLLBACK 才能释放锁。
如果 DML 语句因所引用的表中存在参照完整性违规或其它表中的锁不可用而失败,将会出现: “SQL Anywhere 错误 -210”。