Skip to content

事务

向数据库写入 1 万条记录,方案一是写入硬盘 1 万次,效率低下,方案二是先写入内存,再一次性写入硬盘,充分利用内存读写快速的特性。

INSERT INTO t VALUES (1, 'a');
INSERT INTO t VALUES (2, 'b');
INSERT INTO t VALUES (3, 'c');
INSERT INTO t VALUES (4, 'd');
BEGIN TRANSACTION;
INSERT INTO t VALUES (1, 'a');
INSERT INTO t VALUES (2, 'b');
INSERT INTO t VALUES (3, 'c');
INSERT INTO t VALUES (4, 'd');
COMMIT;

内存的数据可以丢弃,这意味着可以实现回滚。

建库。

sqlite3 test.db

建表。

CREATE TABLE t (
  id INTEGER PRIMARY KEY,
  name TEXT
);

事务。

BEGIN TRANSACTION;
INSERT INTO t VALUES (1, 'a');
INSERT INTO t VALUES (2, 'b');
INSERT INTO t VALUES (2, 'c');
INSERT INTO t VALUES (4, 'd');
COMMIT;
Runtime error: UNIQUE constraint failed: t.id

查询记录。

SELECT * FROM t;
1|a
2|b
4|c

联系 math@baima.site