勇芳软件工作室.汉化:  Constants >

Virtual Table Configuration Options

Previous pageReturn to chapter overviewNext page

%SQLITE_VTAB_CONSTRAINT_SUPPORT = 1

 

这些宏定义了sqlite3_vtab_config()接口的各种选项,虚拟表实现可用于自定义和优化其行为。

 

SQLITE_VTAB_CONSTRAINT_SUPPORT

 

支持窗体sqlite3_vtab_config(db,SQLITE_VTAB_CONSTRAINT_SUPPORT,X)的调用,其中X是整数。如果X为零,则xCreate或xConnect方法调用的虚拟表sqlite3_vtab_config不支持约束。在这个配置(这是默认值)中,如果对xUpdate方法的调用返回SQLITE_CONSTRAINT,那么整个语句将被回滚,就像OR ABORT被指定为用户SQL语句的一部分一样,不管实际的指定CONFLICT模式如何。

 

如果X不为零,则虚拟表实现保证如果xUpdate返回SQLITE_CONSTRAINT,则在对内部或持久数据结构进行任何修改之前,它将会这样做。如果ON CONFLICT模式为ABORT,FAIL,IGNORE或ROLLBACK,则SQLite能够回滚语句或数据库事务,并酌情放弃或继续处理当前SQL语句。如果ON CONFLICT模式为REPLACE,并且xUpdate方法返回SQLITE_CONSTRAINT,那么SQLite处理这一点,就像ON CONFLICT模式是ABORT一样。

 

处理OR REPLACE所需的虚拟表实现必须在xUpdate方法中执行。如果调用sqlite3_vtab_on_conflict函数指示当前ON CONFLICT策略为REPLACE,则虚拟表实现应该静默地替换xUpdate回调中的相应行并返回SQLITE_OK。或者,如果这是不可能的,它可能返回SQLITE_CONSTRAINT,在这种情况下,SQLite返回到OR ABORT约束处理。