Codelgniter清空数据表truncate与delete区别用法

陌芳吖_8044

陌芳吖_8044

2026-08-16

738人浏览

原创

truncate 和 delete 在 codeigniter 中行为与原生 sql 一致:delete 支持 where 条件、可回滚、不重置自增 id、触发触发器;truncate 不支持 where、不可回滚、重置自增 id、释放空间、绕过触发器且受外键约束限制。

codelgniter清空数据表truncate与delete区别用法

在 CodeIgniter 中清空数据表,TRUNCATE 和 DELETE 的底层行为与原生 SQL 一致,但框架提供了不同封装方式。选择哪个,关键看你要不要条件删除、回滚能力、自增ID重置、触发器响应等。

是否支持 WHERE 条件

DELETE 在 CodeIgniter 中可通过 Query Builder 灵活加条件:

ARC Lab
ARC Lab

一款提供AI人像处理、图像增强和智能抠图等能力的视觉处理工具集合,方便用户在线体验多种图片优化功能。

下载
  • $this->db->delete('users'); —— 清空整表(等效于 DELETE FROM users)
  • $this->db->where('status', 'inactive')->delete('users'); —— 只删指定行

TRUNCATE 没有对应 Query Builder 方法,必须用原生查询:
$this->db->query('TRUNCATE TABLE users');
它不接受 WHERE,只能整表清空。

执行速度与日志开销

TRUNCATE 直接释放数据页,不逐行记录,速度快、日志少,适合大批量清空(如日志表、临时缓存表)。
DELETE 会为每一行生成日志,在大表上可能明显变慢,还容易触发锁等待或事务日志膨胀。

若只是清空且无回滚需求,TRUNCATE 更高效;若需审计、调试或保留事务控制,DELETE 更稳妥。

自增 ID 和空间回收

  • TRUNCATE 后,MySQL/PostgreSQL 等会重置 AUTO_INCREMENT 计数器(从 1 或定义的起始值开始)
  • DELETE 不重置自增 ID,新插入记录继续递增(例如删完 id=1~1000,下条是 1001)
  • TRUNCATE 会真正释放磁盘空间、重置高水位线;DELETE 通常只标记删除,空间未必立即回收(尤其 InnoDB)

事务、触发器与外键约束

  • DELETE 是 DML,可放在事务中,支持 $this->db->trans_start() + rollback()
  • TRUNCATE 是 DDL,在多数数据库中隐式提交,无法回滚(MySQL InnoDB 例外,但 CodeIgniter 默认不开启该兼容模式)
  • DELETE 会触发 BEFORE/AFTER DELETE 触发器;TRUNCATE 完全绕过触发器
  • 有外键引用时,TRUNCATE 常报错(如 MySQL 报 “Cannot truncate a table referenced in a foreign key constraint”),此时只能用 DELETE 或先禁用约束

相关专题

更多
数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

2023.11.13

2951

4

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.12.29

905

3

PHP CodeIgniter框架
PHP CodeIgniter框架

本专题专注于 PHP 轻量级框架 CodeIgniter 的学习与应用,系统讲解 MVC 模型、路由与控制器、数据库操作、表单验证、安全机制以及 REST API 开发。通过博客系统、内容管理平台和小型电商等实战项目,帮助学员快速掌握 CodeIgniter 的开发方法与实践技能。

2025.08.28

3639

16

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

20

10

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

2026.10.16

0

10

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

2026.10.16

0

10

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

2026.10.16

0

15

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

2026.10.16

0

15

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

2026.10.16

20

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.7万人学习