2002-07-13 (Sat)

_ ASAのデフォルトオプション

Adaptive Server Anywhereにデフォルトオプションがあるのですが、JDBCを使う場合は注意が必要です。通常のデフォルトオプションとは別に、JDBC接続中に限り上書きされるデフォルトオプションがあるからです。

Adaptive Server Enterpriseとの互換性のためだそうですが、知らないとはまります。つまり、知らなかったので、はまりました(正直、こういう仕様は人心を惑わすので、やめて欲しいです。だって、「デフォルト」じゃないじゃん。せめて、JDBC_xxx_OPTIONみたいに、上書きではなく、デフォルトオプションの中に組み込んで欲しい)。例えば、CREATE TABLEするとき、カラムのNULL制約は、通常NULL可です。しかし、JDBCの場合は、NOT NULLになります。

このJDBCデフォルトオプションを変えるには、次のようなスクリプトを実行します。

CREATE PROCEDURE my_startup_procedure()
BEGIN
  IF connection_property('CommProtocol')='TDS' THEN
    SET TEMPORARY OPTION ALLOW_NULLS_BY_DEFAULT='ON';
  END IF
END;
SET OPTION LOGIN_PROCEDURE= 'DBA.my_startup_procedure';
commit;
[]