何をいまさらと思われるでしょうが、最近Java用軽量RDBMS(関係データベース管理システム)であるHSQLDBを使う機会がありました。その出来のよさに感心することしきりなのですが、ちょっと引っかかったことがあったので、備忘録としてメモを残しておきます。もしかしたらいくつかはJDBC共通かもしれません。
- トランザクションの開始ステートメント(
START TRANSACTION
)を他のステートメントと同時に実行しようとするとエラーになります - 自動コミット・モードが有効な状態ではトランザクション開始後も自動コミット・モードが優先され更新は即座にコミットされます。トランザクションを有効にするにはその前に自動コミット・モードを無効にする必要があります
- 自動コミットモードの無効化は引数に
false
を指定してjava.sql.Connection#setAutoCommitメソッドを呼び出すことで行えます
- 自動コミットモードの無効化は引数に
- SQLの規格の要求するcase insensitiveな予約語他のパースを、HSQLDBでは基本ラテンの文字の大文字への正規化で実現しています。メタデータには正規化された文字列が格納されます。そのためDDLで指定した小文字のスキーマ名をJDBCのAPIで指定すると期待した結果が得られないことがあります
- 具体的にはjava.sql.DatabaseMetaDataインターフェース実装クラス(java.sql.ConnectionクラスのgetMetaDataメソッド呼び出しでインスタンスが取得できます)の各メソッド(getTablesメソッドなど)は引数には正規化=大文字に変換された値を指定しなければなりませんし、戻り値は正規化=大文字に変換された値になっています
以上、参考になりましたら幸いです。