ふとjava.sql.SQLExceptionのJavaDocを見ていたら、SQLSTATEとベンダー固有のエラーコードを取得できることに(いまさら)気づいた。 ベンダー固有のエラーコードはログに吐き出すくらいしか用途を思いつかないが、SQLSTATEはある程度規格化されているはずなので、どの程度役に立つものなのか調べてみた。 Javaプログラムから、以下のSQL文を順に発行してみる。(各SQL文の後ろに書いてあるのは、PreparedStatementに対して指定するパラメータ) CREATE TABLE hoge(idx INTEGER NOT NULL PRIMARY KEY, str VARCHAR(8) NOT NULL); -- OK INSERT INTO hoge(idx, str) VALUES(?, ?); -- 0, "hoge" -- (1) NG: 主キー制約に反