postgresql 清空数据表数据

在 mysql中,只需要执行:

TRUNCATE table_name;

即可,数据表会清空,而且自增id也会变回0;

但在 postgresql 则稍有不同,因为 postgresql 的自增id是通过序列 sequence来完成的,

所以清空数据后,还需要还原序列 sequence

TRUNCATE bigtable, fattable RESTART IDENTITY;

官方文档:https://www.postgresql.org/docs/9.2/static/sql-truncate.html
另一种方式:(因为版本不同,可能命令不同)

truncate table table_name;
alter sequence seq_name start 1;

参考:https://stackoverflow.com/questions/13989243/sequence-does-not-reset-after-truncating-the-table

PostgreSQL清空表并保留表结构、清空数据库还原数据库为新建时的状态的方法



PostgreSQL

清空表并保留表结构
  一般情况下,我们使用delete删除表中数据,但是delete是一条数据一条数据来删除表中的数据,直至表清空(保留表结构),但是当数据量很大时,它耗时较久。
  其实,删除表数据但保留表结构使用truncate更快速安全,使用方法为:

//当表没有其他关系时
TRUNCATE TABLE tablename;
//当表中有外键时,要用级联方式删所有关联的数据
TRUNCATE TABLE tablename CASCADE;

清空数据库还原数据库为新建时的状态
  在postgresql中,创建数据库时会自动创建public模式,一般我们把表都保存在该模式中,因此直接删除该模式再重新创建该模式。
  若数据在其他模式中,则把public换为数据表所在模式即可。

//删除public模式以及模式里面所有的对象
DROP SCHEMA public CASCADE;
//创建public模式
CREATE SCHEMA public;

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值