【问题标题】:Referential integrity list of tables for truncation用于截断的表的参照完整性列表
【发布时间】:2013-10-23 14:25:38
【问题描述】:

我想知道是否有一种快速有效的方法可以在 PostgreSQL 中订购表,这样,如果我运行 DELETE FROM <table_name>,它们都会成功而不会破坏参照完整性。

例如如果表是USER -->* ACCOUNT -->* TRANSACTION,我想先删除 TRANSACTION,然后是 ACCOUNT,然后是 USER,因为任何其他顺序都会破坏外键关系。

我以前通过查询系统表并在某些脚本语言的内存中构建参照完整性树来对其他数据库进行此操作。但我想知道是否有一种快速(更好)的方法来生成这样的列表。

【问题讨论】:

  • 标题写着truncate,但帖子本身写着delete - 你打算用哪个?
  • 重要吗?最终结果是相同的,擦除所有数据并拥有一个空架构
  • 我有点希望你有 FK,所以你可以做 TRUNCATE TABLE users CASCADE,让 postgres 担心订单。
  • @amphibient: DELETETRUNCATE 在谈论参照完整性时很重要。 Read the fine manual here。无论哪种方式,您都可以找到两种不同的方法来获取引用表的递归树in this related answer

标签: sql postgresql foreign-keys referential-integrity


【解决方案1】:

如何定义级联删除的外键,这样你就不需要这样做了?

【讨论】:

  • 这并没有回答我的问题,所以作为评论更合适
  • 它回答了你的问题。您要求为 RDBMS 供应商已经自动化的任务提供手动方法。
  • @amphibient:更多信息和手册链接可能会很好,但这是正确的解决方案。
  • 我不是 DBA。我无法更改架构。我可以删除数据但不能更改架构。我希望这里的 ppl 没有做出假设并遵守问题的规定。
  • 我希望人们记住 Stackoverflow 不仅仅是为了回答他们的特定问题,特别是当他们在解决问题的方式上有限制时,他们没有在问题中列出。请记住,当其他人可以向他们学习时,问题和答案最有价值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-12
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
相关资源
最近更新 更多