[OracleDB To MySQL] 移行時の CREATE (テーブル・インデックス)文で注意する事!

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」関数以外設定できません。

 

タイトルとURLをコピーしました