2011-07-19 10 views
-2

私は3つの列A、B、Cも行を持つテーブルを持っています。列Aが主キーです。テーブルを変更して新しい列を追加する方法は?

は今、私は新しい列D、EおよびFの

を追加する必要があり、新たな要件ごとにまた、私は、列Aから以前のプライマリキーを削除し、列の新しい主キーを追加する必要がありますD.

列EおよびFはNULLです。

私はalter tableステートメントを作成してください。

+4

-1質問を投稿する前に、基本的なドキュメントを検索してお読みください。ドキュメントをダウンロードすることは今日ではとても簡単であり、新しい技術で最初に行うべきことの1つになるはずです。 –

答えて

11

あなたが必要とするのは、多段階のプロセスです。列を追加し、既存の主キー制約を削除し、最後に新しいものを追加します。

ここで最も難しいのは、列Dを追加することです。これを新しい主キーにしたいので、NOT NULLにする必要があります。テーブルに既存のデータがある場合は、このエラーを処理する必要があります。

SQL> alter table your_table 
    2  add (d number not null 
    3   , e date 
    4   , f number) 
    5/
alter table your_table 
      * 
ERROR at line 1: 
ORA-01758: table must be empty to add mandatory (NOT NULL) column 


SQL> 

したがって、ステップ1ではDオプションを指定して新しい列を追加します。そして、どんなキー値を移入:

SQL> alter table your_table 
    2  add (d number 
    3   , e date 
    4   , f number) 
    5/

Table altered. 

SQL> update your_table 
    2  set d = rownum 
    3/

1 row updated. 

SQL> 

今、私たちは列Dを必須にすることができます。

SQL> alter table your_table 
    2  modify d not null 
    3/

Table altered. 

SQL> 

最後に、我々はDへの主キー列を変更することができます。

SQL> alter table your_table 
    2  drop primary key 
    3/

Table altered. 

SQL> alter table your_table 
    2  add constraint yt_pk primary key (d) 
    3/

Table altered. 

SQL> 

上記の構文が明確でない場合は、Oracleです。私はSQL Serverが似たようなものになると期待しています。

+0

ありがとうございます! :)それは私のために働いた。 – sedran

関連する問題