このクエリを取る:テスト
SELECT *
FROM MyTable
WHERE MyColumn = 'SomeValue'
ORDER BY SomeFakeQualifier.MyColumn DESC
それのSQLServerはちょうどこの場合の修飾子を無視しているようです。 JOIN
を追加すると、それが考慮されます。
DBMSベンダー間でクエリを実行可能にするまでは、これは問題ではありません。例えば、オラクルは、修飾子が無効であると正当な理由で不平を言うでしょう。
はい、私たちはこれを大量に排除するORMを使用していますが、まだいくつかのアクション(製品の性質と動的クエリのサポート)ではJDBCが必要です。こののため、実際にはです。この問題が発生しました。誰かがJPAという名前のクエリをJDBC提供のクエリにコピーしましたが、テーブル名ではなくオブジェクト名のままでした。
だから、私は質問があると思います。もしそうなら、あなたのコードをテストして、「主要な3つの」DBMS(SqlServer、Oracle、DB2)で動作することを確認する最良の方法は何ですか?私たちにはQAチームがいますが、これらの特異性の単体テストにはもっと良い方法があるはずです。
注意、我々は常に問題を回避するために、ANSI SQLの書き込みを強制しようとしますが、いくつかのもの、前述の問題のように、私は、これは理にかなって願っています
をすり抜けることができます。必要に応じてより多くの文脈を提供することができます。ここ
TIA