程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

Sqlite - 常规函数 - CHANGES(文本格式数字怎么批量转化为常规数字什么函数)

balukai 2025-03-30 14:22:54 文章精选 5 ℃

在 SQLite 中,changes() 函数是一个非常实用的系统函数,它用于返回上一个 SQL 语句所影响的行数。这个函数对于 INSERT、UPDATE 和 DELETE 语句特别有用,能让开发者清楚地知道操作到底对多少行数据产生了影响。下面详细介绍其使用方法并给出示例。

基本语法

changes()

changes() 函数不需要任何参数,直接调用该函数即可返回上一个 SQL 语句所影响的行数。

使用示例

1. 在INSERT语句后使用 changes() 函数

假设我们有一个名为 students 的表,用于存储学生的信息,包含 id 和 name 两列。

-- 创建示例表
CREATE TABLE students (
    id INTEGER PRIMARY KEY,
    name TEXT
);

-- 插入一条记录
INSERT INTO students (name) VALUES ('Alice');

-- 使用 changes() 函数获取插入操作影响的行数
SELECT changes();
-- 输出结果为 1,因为插入了 1 条记录

-- 插入多条记录
INSERT INTO students (name) VALUES ('Bob'), ('Charlie');

-- 再次使用 changes() 函数获取插入操作影响的行数
SELECT changes();
-- 输出结果为 2,因为插入了 2 条记录

2. 在UPDATE语句后使用changes()函数

-- 更新 students 表中 name 为 'Alice' 的记录,将其 name 改为 'Alicia'
UPDATE students
SET name = 'Alicia'
WHERE name = 'Alice';

-- 使用 changes() 函数获取更新操作影响的行数
SELECT changes();
-- 如果存在 name 为 'Alice' 的记录,输出结果为 1;如果不存在,则输出 0

3. 在DELETE语句后使用changes()函数

-- 删除 students 表中 name 为 'Bob' 的记录
DELETE FROM students
WHERE name = 'Bob';

-- 使用 changes() 函数获取删除操作影响的行数
SELECT changes();
-- 如果存在 name 为 'Bob' 的记录,输出结果为 1;如果不存在,则输出 0

4. 在事务中使用changes()函数

changes() 函数在事务中同样有效,它会返回自上一个事务开始以来或上一个 COMMIT、ROLLBACK 操作之后,最后一个 SQL 语句所影响的行数。

-- 开始一个事务
BEGIN TRANSACTION;

-- 插入一条记录
INSERT INTO students (name) VALUES ('David');

-- 使用 changes() 函数获取插入操作影响的行数
SELECT changes();
-- 输出结果为 1

-- 回滚事务
ROLLBACK;

-- 再次插入一条记录
INSERT INTO students (name) VALUES ('Eve');

-- 使用 changes() 函数获取插入操作影响的行数
SELECT changes();
-- 输出结果为 1

注意事项

  • changes() 函数只返回上一个 SQL 语句所影响的行数,而不是整个事务或者会话中所有 SQL 语句影响的总行数。
  • 如果上一个 SQL 语句是 SELECT 语句,changes() 函数将返回 0,因为 SELECT 语句不会修改数据库中的数据。例如:
SELECT * FROM students;
SELECT changes();
-- 输出结果为 0
最近发表
标签列表