Sqlite参考手册
C界面 | C Interface
Virtual Table Configuration Options
#define 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语句的一部分,而不管实际的ON 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约束处理。
SQLite is in the Public Domain.
C界面 | C Interface相关
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来
主页 | https://sqlite.org/ |
源码 | https://www.sqlite.org/src/ |
发布版本 | 3.21.0 |