2014-09-04 169 views
0

我有兩個表等SAMP1(父表)和SAMP2(子表)修改列數據類型

父表:SAMP1

column   Datatype  Constraint 
---------------------------------------- 
Id Number(6)  Primary  Key 

子表:SAMP2

column    Datatype  Constraint 
---------------------------------------------- 
Id     Number(6)  Foriegn Key 

然後如何修改列數據類型Number到Varchar2(10)一次都有父表和子表,可以嗎?

回答

1

你不能在一個步驟中做到這一點。假設表已數據,你可能需要做一些像

  • 添加一個新的列(如id_varchar)到您的父表
  • 填充在現有列從數據這個新列的數據
  • 新列添加到子表
  • 填充從數據這個新列的數據在現有列
  • 新列創建一個新的外鍵約束
  • 博士OP現有的外鍵約束
  • 刪除現有主鍵約束
  • 除去現有id列從兩個表
  • id_varchar列重命名爲id每個表
  • 父創建一個新的主鍵約束表

通常,這需要一些停機時間,因爲您通常不希望會話在您這樣做時修改數據。如果您需要在線執行此操作,則可能會使用dbms_redefinition程序包,這將涉及創建兩個表的新副本。

+0

謝謝你回覆Mr Justin Cave – MastanSky 2014-09-04 07:33:04