2011-10-20 8 views
2

したがって、IDという名前の列を作成するスクリプトがあります。我々は以前、このコラムを作成したのと同じデルタスクリプトを持っているので、今すぐロールバックスクリプトの一部として、このコラムは、今、このコラムOracleは未使用の列を設定してから同じ名前の新しい列を作成します

alter table table_name set unused column ID; 

を削除するには、その事実上不可能以来UNUSEDに設定されている

alter table table_name add (ID NUMBER(2)) 

私たちがデルタをもう一度実行してこの列を「追加」すれば、それは大丈夫でしょうか?この問題に取り組むには、どのようなアプローチが必要ですか?

未使用は、それをdictionryから削除し、1バイトのヌル値を列に追加しますが、同じ名前の同じ列を追加すると幸いです。

答えて

6

それは、このチェックすることは簡単です:もちろん

SQL> create table t23 (
    2 id number 
    3 , col1 varchar2(10) 
    4 ); 

Table created. 

SQL> alter table t23 
    2  set unused column id; 

Table altered. 

SQL> desc t23 
Name          Null? Type 
----------------------------------------- -------- ---------------------------- 
COL1            VARCHAR2(10) 

SQL> alter table t23 
    2  add (id number) 
    3/

Table altered. 

SQL> desc t23 
Name          Null? Type 
----------------------------------------- -------- ---------------------------- 
COL1            VARCHAR2(10) 
ID             NUMBER 

SQL> 

を、私の例では、あなたのシナリオと全く同じではありませんが、基本的に未使用のSETを繰り返し、あなたが好きなように何回ものサイクルを追加することができます。ただし、ある時点でクリーンアップを実行することをお勧めします。

SQL> alter table t23 drop unused columns 
    2/

Table altered. 

SQL> 

これは低速で実行できます。

+0

ありがとうございます、私は今私の最後にいくつかのテストを実行することができます。私はちょうど何らかの説明をして、あなたの例が助けました。 –

関連する問題