作家模式规范

SQLite3编写器允许用户指定编写器模式,该模式决定应该为接收到的每个特性发出什么数据库命令。有效的写入模式有插入更新删除

作家模式

插入模式时,每个接收到的特性的属性值被写入一个新的数据库记录。

更新模式下,使用每个接收到的特征的属性值来更新数据库中的现有记录。被更新的记录是通过sqlite3_update_key_columnsDEF行参数,或通过fme_where属性。

删除模式下,根据接收到的特征中指定的信息删除已有的数据库记录。选择要删除的记录使用与选择要更新的记录相同的技术更新模式。

作家模式约束

更新删除模式下,fme_where属性总是优先于sqlite3_update_key_columnsDEF行参数。如果fme_where属性和sqlite3_update_key_columnsDEF行参数不存在,那么更新删除模式将产生一个错误。

fme_where属性存在时,它将作为生成的WHERE子句逐字使用更新删除命令。例如,如果fme_where被设置为'id < 5,则所有字段ID小于5的数据库记录都将受到该命令的影响。

fme_where属性不存在时,作者查找sqlite3_update_key_columnsDEF行参数,并使用它来确定应该受命令影响的记录。请参考DEF有关的更多信息sqlite3_update_key_columnsDEF线参数。

作家模式选择

可以在三个唯一的级别指定写入器模式。它可以在写入器级别、特征类型或单个特征上指定。

在写入器级别,写入器模式由WRITER_MODE关键字。该关键字可以被特性类型写入模式规范取代。注意:有关此指令的更多信息,请参阅本章数据库作家模式

在特性类型级别,编写器模式由sqlite3_writer_modeDEF线参数。该参数取代WRITER_MODE关键字。除非该参数设置为插入,它可能在个别特征上被fme_db_operation属性。有关此参数的更多信息,请参阅DEF行文档。

在特性级别,编写器模式由fme_db_operation属性。除非特性类型级别的参数被设置为插入,此属性指定的写入模式总是取代所有其他值。fme_db_operation属性接受的值是插入更新删除

fme_db_transaction

在编写器处理每个特性时,会检查调用的属性fme_db_transaction

该属性的值指定写入器是否应该提交或回滚当前事务。属性的值可以是:

  • COMMIT_BEFORE
  • COMMIT_AFTER
  • ROLLBACK_AFTER
  • 忽略

如果fme_db_transaction属性未在任何特性中设置,则整个写操作发生在单个事务中。

注意:为了使用这个功能,事务间隔(对于ArcSDE,这被调用每个事务特性)必须设置为变量