我試圖DROP SEQUENCE
序列,應該不存在我的表中。 The documentation很明顯,如果使用CASCADE
選項,那麼依賴於該序列的對象將被刪除。你如何確定這些對象可能是什麼(如果它們存在的話)?確定什麼對象依賴於一個序列?
具體來說,在生產數據庫中運行此操作之前,我需要驗證沒有任何關鍵字將被刪除。
我能確定如果的序列已經被使用:
dev=> SELECT sequence_name, last_value FROM mytable_columnname_seq;
sequence_name | last_value
-----------------------+------------
mytable_columnname_seq | 2
(1 row)
在上面我們看到,last_value
是2
,這意味着它已經被使用。但是沒有標明什麼。
分辨率(和感謝a_horse_with_no_name和窯;我無法接受兩個答案,這是一種恥辱):
在「從屬」對象是序列被分配給該列的表的默認值。如果刪除列的默認值是安全的,那麼刪除序列同樣安全:沒有行或表將被刪除,並且它們的值將保持不變。
這是說只有有問題的表是'依賴對象'嗎?如果是的話,如果使用CASCADE,表格將被刪除?這聽起來不太對勁? –
表格不會被刪除。如果表格(或列)被刪除,則該序列將被刪除。 – klin