原文地址:http://iihero.iteye.com/blog/1189633

 

PRAGMA语句是SQLITE数据的SQL扩展,是它独有的特性,主要用于修改SQLITE库或者内数据查询的操作。它采用与SELECT、INSERT等语句一样的形式来发出请求,但也有几个重要的不同: 
1. 特定的PRAGMA语句可能被移走,新的PRAGMA语句可能在新的版本中添加。因此,后向兼容无法保证。 
2. 未知的PRAGMA命令不会有错误消息出现,它只是简单的忽略。 
3. 有些PRAGMA只在SQL的编译阶段起作用,而不是执行阶段。 这意味着如果使用C语言,sqlite3_prepare(), sqlite3_step(), sqlite3_finalize()这几个API,pragma命令可能只在prepare()的调用里运行,而不是在后两个API当中执行。或者,pragma可能在sqlite3_step()执行的时候运行。到底在哪个阶段执行,取决于pragma从本身,以及是哪个sqlite的release版本。 
4. pragma命令是sqlite特有的,基本上不可能与其它数据库保持兼容。 

PRAGMA命令的语法格式如下图: 
SQLite中的PRAGMA语句攻略

它可以不带参数,或者只带一个参数。这个参数可以是等号赋值,也可以用括号括起来。两者效果一样。很多情况下,参数值是布尔型,值为(1,yes,true 或on)或者(0, no, false, off) 
关键字参数,可以使用引号括起来,e.g. 'yes' [FALSE]。有些pragma命令会使用字符串作为参数,"0"和"no"表示相同的含义。当查询某设置的值时,很多情况下返回的是数值,而不是关键字。 

pragma名之前,可以选带数据库的名字。数据库名是被"attach"(关联)上的数据库名字,或者是"main", "temp"来表示主数据库和临时数据库。如果可选的数据库名被略去,则默认为"main"数据库。在有些pragma命令里,数据库名没有意义,则简单的忽略掉。 

下面我们看看sqlite到底有些有用的pragma命令: 
auto_vacuum 
automatic_index 
cache_size 
case_sensitive_like 
checkpoint_fullfsync 
collation_list 
compile_options 
count_changes¹ 
database_list 
default_cache_size¹ 
empty_result_callbacks¹ 
encoding 
foreign_key_list 
foreign_keys 
freelist_count 
full_column_names¹ 
fullfsync 
ignore_check_constraints 
incremental_vacuum 
index_info 
index_list 
integrity_check 
journal_mode 
journal_size_limit 
legacy_file_format 
locking_mode 
max_page_count 
page_count 
page_size 
parser_trace² 
quick_check 
read_uncommitted 
recursive_triggers 
reverse_unordered_selects 
schema_version 
secure_delete 
short_column_names¹ 
synchronous 
 

相关文章:

  • 2022-12-23
  • 2021-11-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-14
  • 2021-05-15
  • 2022-12-23
  • 2022-12-23
  • 2021-12-31
相关资源
相似解决方案