OracleDB から MySQL への移行に際して、現行ビュー、ストアドプロシージャ、DML トリガに実装している CREATE (テーブル・インデックス)文を移行する場合の注意点を以下にまとめます。
なお OracleDBは 12.1 Standard Edition 2、MySQL は 5.7 Community Edition(InnoDB)を想定しています。
テーブルの主キー(PK)制約の移行に関する注意事項
テーブルの主キー(PK)制約を作成する方法には以下の2つがあります。
- CREATE TABLE 時に作成する方法
- CREATE TABLE 後、ALTER TABLE にて作成する方法
CREATE TABLE 時に作成する方法で移行する場合の注意事項
CREATE TABLE 文では、細かいオプションを除きほぼ同等に使用できますが、修正箇所は多くなります。
なお、ストレージ句は削除します。
CREATE TABLE 後、ALTER TABLE にて作成する方法で移行する場合の注意事項
ユニークインデックスの作成が必要ないので当該DDL を削除します。
ALTER TABLE 文では、構文の違いに注意して修正する必要があります。
カラムデフォルト値の移行に関する注意事項
カラムデフォルト値の観点では以下の2つがあります。
- 数値、文字列、日時
- SQL関数の取得値
数値、文字列、日時 を移行する場合の注意事項
列に対して、「DEFAULT デフォルト値(数値、文字列)」で指定するの方法は OracleDB、MySQL 共通です。
一方、日時型カラムに対して指定する場合、OracleDB は、環境変数「NLS_DATE_FORMAT」により年月日フォーマットを変更できますが、MySQL は当該環境変数がありません。
MySQL の場合、 DATE 型は ‘YYYY-MM-DD’、DATETIME 型は ‘YYYY-MM-DD HH:MM:SS’ にてカラムデフォルト値を記載する事に注意して下さい。
SQL関数の取得値を移行する場合の注意事項
MySQL は、カラムデフォルト値に「SQL関数の取得値」の設定は、OracleDB の「SYSDATE」関数に対応する「CURRENT_TIMESTAMP」関数以外設定できません。