エンタープライズ:特集 | 2003/07/25 18:19:00 更新 |
[Java Developer特別企画]2003年9月号
知っておきたいデータベース移行術「SQL Server→Oracle編」 (8/15)
JAVA Developer 2003年9月号より転載
●表定義に関する情報の移行
データ型の違いがある以上、表定義も少なからず変更が必要です。また、データ型とは別に、表に関連する機能の違いも考慮しなければいけません。
・シーケンス/順序
比較的よく使われるシーケンス/順序と呼ばれる機能は、SQL ServerとOracle9iの両方がサポートしており、移行できます。SQL Serverで表定義の際に「IDENTITY」というプロパティを使い、表操作の際に自動的に番号が生成されるものです。SQL Serverでは、次のように表作成で記述されます(初期値100で1ずつ増加する場合)。
CREATE TABLE items ( no int identity(100, 1) NOT NULL, name varchar(100) NOT NULL); |
これをOracle9iに移行する場合、Oracle9iでは表定義の際に指定するのではなく、SEQUENCEというオブジェクトを次のように使用することになります。
CREATE SEQUENCE no START WITH 100 INCREMENT by 1; |
これで、表とは切り離されたnoという順序(Oracle9iでの呼び方)を使えます。表定義とデータ挿入時の実際のSQL文は次のように変更します。
CREATE TABLE items ( no int NOT NULL name varchar(100) NOT NULL); INSERT INTO items VALUES ( no.nextval, …); |
となります。この使い方の違いは、移行時に重要です。Oracle9iでは表から独立したシーケンス/順序を定義できますので、複数の表で同じシーケンス/順序を使うことも可能です。
・制約
表を定義する際には、そのデータが表中で一意でなければならないUNIQUE制約、値が指定されていない場合のデフォルト値を決めるDEFAULT制約などが存在します。これらはSQL ServerもOracle9iも同等の機能をサポートしています。SQL文の表記も似ており、ほぼそのまま移行させることが可能です。
表5 制約の移行 | ||
SQL Server 2000 | Oracle9i | |
PRIMARY KEY制約 | 同等 | |
UNIQUE制約 | 同等 | |
DEFAULT制約 | 同等 | |
CHECK制約 | 同等 | |
FOREIGN KEY制約 | 同等 |
関連リンク
JAVA Developer
定期購読のご案内
バックナンバー販売協力店
Javaコレクションのマスターを目指せ! JAVA Developer 9月号
大特集
特集2 BEA WebLogic ・コレクションフレームワークとデータ構造 ・知っておきたいデータベース移行術 「SQL Server→Oracle編」 ・Webアプリケーションセキュリティ |
前のページ | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 次のページ
[西脇 資哲,JAVA Developer]