よくある差分に限定してまとめる。 ## 列名のクォーテーション [[MySQL]]はバッククォートが使えるが、[[PostgreSQL]]は使えない。つまり以下は[[PostgreSQL]]ではNG。 ```sql CREATE TABLE hoge ( `col1` INT PRIMARY KEY ) ``` ## 日付型 [[MySQL]]では[[DATETIME型 (MySQL)|DATETIME型]]だが、[[PostgreSQL]]では[[TIMESTAMP型 (PostgreSQL)|TIMESTAMP型]]を使う。 > [!question] > [[MySQL]]にも[[TIMESTAMP型 (MySQL)|TIMESTAMP型]]はある。8.0.19からはオフセットも指定できるようになったので、そちらに統一する流れ?? ## ENUM [[MySQL]]では[[ENUM型 (MySQL)|ENUM型]]を使えるが、[[PostgreSQL]]には存在しないため[[列にEnumを定義 (PostgreSQL)|列にEnumを定義]]し、その型を使う。 `MYSQLの場合` ```sql CREATE TABLE hoge ( `col1` ENUM('option1', 'option2', 'option3') ) ``` `PostgreSQLの場合` ```sql CREATE TYPE options AS ENUM ('option1', 'option2', 'option3'); CREATE TABLE hoge ( col1 OPTIONS ) ``` ## ON UPDATE CURRENT_TIMESTAMP [[MySQL]]にしかない構文。