2010-03-24 461 views

回答

1

對於postgres,NO ACTION是默認設置,對於大多數用途而言,其與RESTRICT相同,如here所述。

我會建議明確的,特別是在DDL,每當有疑問(然後一些)。 這有多種原因:

  • 一些行爲數據定義語句可能依賴於服務器的設置和版本,讓您的備份和恢復可以被明確
  • 如果您嘗試從一個移動數據受益RDBMS引擎到另一個顯式的可以幫助你發現兩種方言之間的誤解(如果他們不會默默地跳過他們沒有得到的部分)
  • 如果你現在甚至想到歧義,試着想象下一個維護數據庫或者你自己在幾年內 - 在你的創建腳本中顯式和評論將在一天內得到回報
+0

對於ISO/ANSI標準SQL-92,缺省值爲「NO ACTION」。這是因爲顯式引用操作(包括'NO ACTION')是一個完整的SQL-92功能。換句話說,入門級的SQL-92允許你創建一個FK而不指定參考動作,而'NO ACTION'則是大多數從業者在缺省情況下期望外鍵可以工作的方式。還要考慮到,當引入SQL-92時,許多SQL產品缺少「CASCADE」引用操作。 – onedaywhen 2010-03-25 09:23:27

0

您還應該考慮到並非所有的DBMS都會接受這些選項(也不允許使用相同的值)。例如,我認爲Oracle不支持onupdate子句