参照网址:http://www.ibm.com/developerworks/cn/opensource/os-sqlite/
SQLite 对 SQL92 标准的支持包括索引、限制、触发和查看。SQLite 不支持外键限制,但支持原子的、一致的、独立和持久 (ACID) 的事务(后面会提供有关 ACID 的更多信息)。
这意味着事务是原子的,因为它们要么完全执行,要么根本不执行。事务也是一致的,因为在不一致的状态中,该数据库从未被保留。事务还是独立的,所以,如果在同一时间在同一数据库上有两个执行操作的事务,那么这两个事务是互不干扰的。而且事务是持久性的,所以,该数据库能够在崩溃和断电时幸免于难,不会丢失数据或损坏。
SQLite 通过数据库级上的独占性和共享锁定来实现独立事务处理。这意味着多个进程和线程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程向数据库执行写入操作之前,必须获得独占锁定。在发出独占锁定后,其他的读或写操作将不会再发生。
以下是自己在实验过程中遇到并解决的问题:
1,在任意目录下敲sqlite3命令提示不是内部命令错误,这个很好解决。
不过我做了一个尝试,我在环境变量的本地用户变量里面添加了一个SQLITE3_HOME=.;D:\Program Files\SQLite,加上去之后,
把它放到系统变量的Path前面,然后到控制台里面试了下,结果仍然报错。于是我只能把SQLITE3_HOME放到系统变量里面去,结果OK。
2,通过attach database命令连接之后,
ATTACH DATABASE 'd:/mydb.db' AS mydb;
退出当前连接的话,临时表就没有了。
我这边新建了一个临时表,完了我再通过 sqlite3 d:/mydb.db连接db之后,发现里面并没有查到这个临时表。
并且我通过记事本打开文件看内容也没有发现临时表的记录。
完了我在sqlite3的模式下新建了临时表,.quit(或者.exit)退出后,再sqlite3进来的话,同样没有临时表了,恩,果然名副其实的临时表。