私は3つの列A、B、Cも行を持つテーブルを持っています。列Aが主キーです。テーブルを変更して新しい列を追加する方法は?
は今、私は新しい列D、EおよびFの
を追加する必要があり、新たな要件ごとにまた、私は、列Aから以前のプライマリキーを削除し、列の新しい主キーを追加する必要がありますD.
列EおよびFはNULLです。
私はalter tableステートメントを作成してください。
私は3つの列A、B、Cも行を持つテーブルを持っています。列Aが主キーです。テーブルを変更して新しい列を追加する方法は?
は今、私は新しい列D、EおよびFの
を追加する必要があり、新たな要件ごとにまた、私は、列Aから以前のプライマリキーを削除し、列の新しい主キーを追加する必要がありますD.
列EおよびFはNULLです。
私はalter tableステートメントを作成してください。
あなたが必要とするのは、多段階のプロセスです。列を追加し、既存の主キー制約を削除し、最後に新しいものを追加します。
ここで最も難しいのは、列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が似たようなものになると期待しています。
ありがとうございます! :)それは私のために働いた。 – sedran
-1質問を投稿する前に、基本的なドキュメントを検索してお読みください。ドキュメントをダウンロードすることは今日ではとても簡単であり、新しい技術で最初に行うべきことの1つになるはずです。 –