sqllite事务和MySQL事务_SQLite教程(五):数据库和事务

本文介绍了SQLite中的数据库附加(Attach)和分离(Detach)操作,以及事务处理,包括隐式和显式事务。示例展示了如何在SQLite命令行中进行这些操作,并解释了事务的原子性和一致性特性。
摘要由CSDN通过智能技术生成

一、Attach数据库:

ATTACH DATABASE语句添加另外一个数据库文件到当前的连接中,如果文件名为":memory:",我们可以将其视为内存数据库,内存数据库无法持久化到磁盘文件上。如果操作Attached数据库中的表,则需要在表名前加数据库名,如dbname.table_name。最后需要说明的是,如果一个事务包含多个Attached数据库操作,那么该事务仍然是原子的。见如下示例:

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

二、Detach数据库:

卸载将当前连接中的指定数据库,注意main和temp数据库无法被卸载。见如下示例:

--该示例承载上面示例的结果,即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

三、事务:

在SQLite中,如果没有为当前的SQL命令(SELECT除外)显示的指定事务,那么SQLite会自动为该操作添加一个隐式的事务,以保证该操作的原子性和一致性。当然,SQLite也支持显示的事务,其语法与大多数关系型数据库相比基本相同。见如下示例:

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值