我有一個任務,爲不同表中的一批條目實現「回滾」(不是通常的回滾)功能。例如:Postgres:如何刪除多個表中的條目
def rollback(cursor, entries):
# entries is a dict of such form:
# {'table_name1': [id1, id2, ...], 'table_name2': [id1, id2, ...], ...}
我需要刪除每個table_name中的條目。但是因爲這些條目可能有這麼複雜的關係。我的想法分幾個步驟:
- 找出所有可爲空的表中的所有列。
- 更新所有條目將可以爲空的所有列設置爲空。在這一步之後,應該沒有循環依賴(如果沒有,我認爲它們不能插入到表中)
- 找出它們的依賴並進行拓撲排序。
- 一一刪除。
我的問題是:
- 是否想法有意義嗎?
- 有沒有人做過類似的事情?如何?
- 如何查詢元表的第3步?因爲我對postgresql相當陌生。
任何想法和建議將不勝感激。
我必須問 - *爲什麼*?這是一個非常奇怪的問題,它不是一項任務,就是你需要解決一些問題的一件事,你已經認定這是最好的解決方案,而且你正在問我們最佳解決方案的問題。如果是後者,它可能有助於解釋潛在的問題,也就是說,通過這樣做你最終想達到的目標。 –
另外,通過「回滾」,你實際上是否意味着「刪除」?回滾意味着撤銷更改或恢復之前的內容。您似乎想要刪除可能具有相互依賴的外鍵關係的不同表中的一組行。 –
@CraigRinger thx您的回覆。這不是一項家庭作業:)事實上,我正在處理一個導入/導出數據項目,系統中有很多表格,可能需要將數據導入/導出其中的一些表格。有一個功能是撤消輸入。所以我使用名稱'回滾',也許不是那麼正確:)任何方式,問題只是刪除一組行,如你所說 – jayven