Primary-Key

更新主鍵

  • February 22, 2012

我想更新一個主鍵列,但更改應該級聯到該主鍵用作外鍵的所有其他子表。

範例:table1 將列“slug”作為主鍵。一行有蛞蝓“foo”,應該是“bar”。表“table1”在其他十個表中用作外鍵(子表)。

我很容易創建這樣做:

begin;
update table1 ...
update table_child1 ...
update table_child2 ...
...
commit;

有沒有工具可以讓這更容易?例如,查看數據庫佈局並創建更新命令的工具。

我使用 PostgreSQL 9.1,但首選攜帶式解決方案。

更新:我不想/可以更改數據庫架構以在數據庫級別包含“更新級聯”。

如果您的FOREIGN鍵是使用該ON UPDATE CASCADE選項定義的,那麼您無需執行任何更新父表的操作。

但似乎這些ON UPDATE選項尚未在 Django 中正確實現。

我為我的環境(django)編寫了一個管理命令。

http://djangosnippets.org/snippets/2691/

引用自:https://dba.stackexchange.com/questions/13631