エンタープライズ:特集 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特別企画]
知っておきたいデータベース移行術
「SQL Server→Oracle編」
(1)データベース移行に伴う影響範囲〜JDBCドライバ
(2)移行の実際〜認証/権限と命名規則
(3)データ型の移行〜数値型
(4)データ型の移行〜文字型
(5)データ型の移行〜日付データ型
(6)データ型の移行〜ラージデータ型/そのほかの特殊な型
(7)表定義に関する情報の移行
(8)関数の移行〜数値関数
(9)関数の移行〜文字関数
(10)関数の移行〜日付関数
(11)関数の移行〜そのほかの関数
(12)演算子の移行
(13)文法/Transact-SQL文/索引/ビュー/トリガーなどの移行
(14)メリットと注意事項〜移行ポイントを再確認

関連リンク
▼JAVA Developer
▼定期購読のご案内
▼バックナンバー販売協力店

JAVA Developer9月号表紙 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]