概述
在实际业务中,多步操作需要保证数据一致性,例如转账场景。本文介绍 KingbaseES 数据库的 ksql 命令行事务管理,涵盖事务概念、基本操作、隔离级别及问题排查。
前置准备:确认操作环境
事务操作依赖已有的表和数据,需先完成以下准备:
1. 用有权限的用户连接数据库
执行 INSERT、UPDATE、DELETE 等操作时,用户需具有表操作权限。推荐以管理员用户 system 或已授权用户 test 建立连接。
# 连接 kingbase 数据库
ksql -d kingbase -U system
# 切换到 test_schema 模式
SET search_path TO test_schema, public;
2. 确认测试表与数据
创建账户表 account 并插入测试数据,用于演示转账场景。
-- 1. 创建账户表
CREATE TABLE IF NOT EXISTS account (
id INT PRIMARY KEY,
balance NUMERIC(10,2) NOT NULL CHECK(balance >= 0)
);
-- 2. 插入测试数据(A 账户 1000 元,B 账户 2000 元)
INSERT INTO account (id, balance) VALUES (1, 1000.00), (2, 2000.00);
-- 3. 验证数据
SELECT * FROM account;
核心概念:事务与 ACID 特性
事务是一组无法分割的 SQL 操作,要么全部执行完毕(提交),要么全部不执行(回滚)。事务应具备 ACID 特性,这是数据一致性的关键保障。
事务控制命令:3 个核心命令
KingbaseES 通过 BEGIN、COMMIT、ROLLBACK 三个命令来控制事务。
1. 启动事务:BEGIN / START TRANSACTION
在执行一系列原子操作之前,首先启动事务。
BEGIN;
-- 或
START TRANSACTION;
示例:
;
account balance balance id ;
account balance balance id ;


