[PHP-users 6746] Re: FRC: New PostgreSQL function for PHP (pg_convert)
Naofumi Kondoh
php-users@php.gr.jp
Mon, 08 Apr 2002 17:23:12 +0900
ソフト工房の近藤です。
Yasuo Ohgaki wrote:
>
> 大垣です。
詳しい説明ありがとうございます。
PHP-users 6734 で、エラーの時は FALSE を返すという仕様
ですが、できれば、どの列がどういうエラーだったかわかった
方が便利だと思います。
勿論、SQL 文生成前の更新値のチェックは行なうのが当然だ
から、列ごとのエラーチェックは不要という考えもあるとは
思いますが、あった方が便利です。
-- snip --
> # "" (null string)がNULLになると困る場合は使わな
> # いでください。ほとんどの場合、この仕様で困らないと
> # と思いますが、もし困る方多い場合は考えます。
実情は大垣さんの言われるとおりだとは思います。
しかし、"" と NULL を混同する人が多くて、SQL の説明に
いつも苦慮している身としては、"" と NULL を同一視して
しまいかねない仕様には抵抗があります。
個人的には、"" は、そのまま "" と扱って、NULL にしたい
ばあいは、\N など特別な文字列を入れるという仕様の方が
良いと思います。
少くとも、直接 SQL 文を書いた場合と、pg_convert() を
通した場合では、結果が違うというのは、仕様として好ましく
ないと思います。
# 以前どこかのMLで話題になったことですが、CHAR 型に "" を
# INSERT した場合、Oracle では NULL になり、PostgreSQL
# Informix では、空白になるということでした。ANSI SQL
# の解釈では、"" の場合は CHAR 型で空白補完の義務はない
# という説明を頂いた記憶があります。
> PHP4.3.0リリースまでにはデフォルト値の有無、NOT NULLの指定
> の確認も追加する予定です。
DEFAUTL,NOT NULL は当然ですが、CHECK 制約も欲しいですね。
pg_convert() でエラーにならなければ、pg_exec でもエラーに
ならないのが理想だけど、UNIQUE INDEX や REFERENCES その他
があるから実現不可能でしょうね。
そこまでカバーしようとすると、関数レベルの話ではなくて、
フレームワークのような手法をとるしかないと思っています。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
(株)ソフト工房 近藤直文 Email: nkon@shonan.ne.jp
《 PostgreSQL+PHPソースコードジェネレーターデモGPL版 》
http://www.SOFTKOUBOU.co.jp/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/