是否可以在postgres中使用单个命令从所有表中删除所有行(而不破坏数据库),或者在postgres中级联删除?

如果没有,那么我该如何重置测试数据库?

最佳答案



您说得对,答案是否定的

您可以定义级联外键,如果删除了“父级”,这些外键将删除所有引用行。但这是外键的属性,您无法使用DELETE语句指定任何内容



那是什么意思?

再次想一想:您要达到什么目标?

我怀疑您正在尝试“重置”例如测试数据库。在那种情况下,PostgreSQL方法将是:

  • 创建一个数据库,该数据库包含新数据库(例如,称为my_template)中所需的所有内容(表, View ,索引等)
  • 要重置当前的测试数据库,请执行DROP DATABASE testdb,然后使用CREATE DATABASE testdb TEMPLATE my_template重新创建测试数据库

  • 新创建的testdb将在my_template中定义所有表。这可能比删除所有行快很多

    关于postgresql - Postgres : delete all tables or cascade a delete?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3524368/

    10-15 21:28