2014-01-17 97 views
3

我想添加一個新列到我的生產數據庫(11g)中,該列中有數百萬條記錄,但只需要默認值的那些現有記錄,即無新記錄應填充此默認值。如何將新添加列添加到Oracle中所有現有行11g

可能嗎?

+2

希望你第一次測試此,上飛生產數據庫未作任何改動。如果該列不可爲空[您可以在11g中快速執行此操作](http://www.oracle.com/technetwork/articles/sql/11g-schemamanagement-089869.html),但新記錄將獲得默認值;但是如果它不是可以爲空的並且你不希望默認應用於新記錄,那麼你的應用程序將總是設置該值,所以默認不會適用,對吧?否則,您可以使用默認值進行更新,然後在任何新插入操作之前刪除默認值,這會更慢。 –

回答

2
  • 根據我的理解,您希望將列添加到現有表中並使用默認值進行更新。

    alter table table_name add(col_name data_type); 
    
    Update table_name set col_name=some_default_value; 
    
+0

通過這樣做您的數據不會同時受到干擾默認值不會繼續進一步 – Sai

+0

如果我們使用DML命令(UPDATE),它會消耗更多時間來更新所有數百萬條記錄,而不是使用DDL(Alter)命令本身嗎? – SuRa

+0

Ddl alter不會花費太多時間..im不知道有關dml update ..但不是在alter命令中給出默認值上面建議的是最好的 – Sai