源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

SQLite教程(五):数据库和事务

  • 时间:2022-07-28 16:46 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:SQLite教程(五):数据库和事务
[b]一、Attach数据库:[/b]      ATTACH DATABASE语句添加另外一个数据库文件到当前的连接中,如果文件名为":memory:",我们可以将其视为内存数据库,内存数据库无法持久化到磁盘文件上。如果操作Attached数据库中的表,则需要在表名前加数据库名,如dbname.table_name。最后需要说明的是,如果一个事务包含多个Attached数据库操作,那么该事务仍然是原子的。见如下示例:  
[u]复制代码[/u] 代码如下:
    sqlite> CREATE TABLE testtable (first_col integer);     sqlite> INSERT INTO testtable VALUES(1);     sqlite> .backup 'D:/mydb.db'   --将当前连接中的主数据库备份到指定文件。     sqlite> .exit     --重新登录sqlite命令行工具:     sqlite> CREATE TABLE testtable (first_col integer);     sqlite> INSERT INTO testtable VALUES(2);     sqlite> INSERT INTO testtable VALUES(1);     sqlite> ATTACH DATABASE 'D:/mydb.db' AS mydb;        sqlite> .header on            --查询结果将字段名作为标题输出。     sqlite> .mode column        --将每列都分开显示。     sqlite> SELECT t1.first_col FROM testtable t1, mydb.testtable t2 WHERE t.first_col = t2.first_col;     first_col     ----------     1   
[b]二、Detach数据库:[/b]          卸载将当前连接中的指定数据库,注意main和temp数据库无法被卸载。见如下示例:  
[u]复制代码[/u] 代码如下:
    --该示例承载上面示例的结果,即mydb数据库已经被Attach到当前的连接中。     sqlite> DETACH DATABASE mydb;     sqlite> SELECT t1.first_col FROM testtable t1, mydb.testtable t2 WHERE t.first_col = t2.first_col;     Error: no such table: mydb.testtable    
[b]三、事务:[/b]     在SQLite中,如果没有为当前的SQL命令(SELECT除外)显示的指定事务,那么SQLite会自动为该操作添加一个隐式的事务,以保证该操作的原子性和一致性。当然,SQLite也支持显示的事务,其语法与大多数关系型数据库相比基本相同。见如下示例:  
[u]复制代码[/u] 代码如下:
    sqlite> BEGIN TRANSACTION;     sqlite> INSERT INTO testtable VALUES(1);     sqlite> INSERT INTO testtable VALUES(2);     sqlite> COMMIT TRANSACTION;      --显示事务被提交,数据表中的数据也发生了变化。     sqlite> SELECT COUNT(*) FROM testtable;     COUNT(*)     ----------     2     sqlite> BEGIN TRANSACTION;     sqlite> INSERT INTO testtable VALUES(1);     sqlite> ROLLBACK TRANSACTION;  --显示事务被回滚,数据表中的数据没有发生变化。     sqlite> SELECT COUNT(*) FROM testtable;     COUNT(*)     ----------     2
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部