どのようにこれを行うのですか?SYSCOLUMNSシステム表には、表の列のみがあります。SYSCHECKSにはREFERENCEDCOLUMNSオブジェクトがあります。これを取得する方法はありますか?
JDBC getPrimaryKeys呼び出しを認識していますが、一意の制約列を取得しません。
どのようにこれを行うのですか?SYSCOLUMNSシステム表には、表の列のみがあります。SYSCHECKSにはREFERENCEDCOLUMNSオブジェクトがあります。これを取得する方法はありますか?
JDBC getPrimaryKeys呼び出しを認識していますが、一意の制約列を取得しません。
上記の質問を見つけるには、少し掘り下げる必要がありました。私の質問は、上記の質問に対する部分的に回答されたフォローアップの質問です。
SYSKEYSに対してCONSTRAINTIDを実行すると、CONGLOMERATEIDが生成され、SYSCONGLOMERATESに対して実行すると、DESCRIPTORが生成されます。DESCRIPTORは、baseColumnPositionsメソッドにint-arrayを含むPOJOです。このint配列には、制約内の列のSYSCOLUMNS内のCOLUMNNUMBERSが含まれています。
ストレートSQLでクエリを実行する場合、DESCRIPTORフィールドを取得すると、解析する必要のあるintのCSVリストを含む文字列が生成されます。幸いなことに、私はたまたまClojureで作業しているので、baseColumnPositionsメソッドを呼び出して結果のint-arrayを使用するのは簡単です。