DBVisualizer を使用して、Oracle 10.2 DB から DDL を抽出しています。制約で繰り返される列の奇妙なインスタンス、または生成された DDL で繰り返される制約を取得しています。最初は DBVisualizer のバグだと思っていましたが、DB に対して Apache DDLUtils を使用しようとしたところ、調査の結果、同じ問題が原因であることが判明したエラーがスローされ始めました。Oracle から返されるテーブル メタデータには、一部の FK 制約に対して複数のエントリがあるようです。
私のグーグル検索からこの種のものへの言及を見つけることができず、他の誰かが同じものを見たのではないかと思っていました. これは Oracle ドライバーのバグですか、それともツールがアクセスしたときにメタデータに追加情報が含まれているため、ツール側で混乱が生じているのでしょうか...
からの (切り捨てられた) DDL 出力の例を次に示します。
CREATE TABLE ARTIST
(
ID INTEGER NOT NULL,
FIRST_NAME VARCHAR2( 128 ),
LAST_NAME VARCHAR2( 128 ),
CONSTRAINT ARTIST_ID_PK PRIMARY KEY( ID ),
CONSTRAINT ARTIST_CONTENT_ID_FK FOREIGN KEY( ID, ID, ID ) REFERENCES CMS_CONTENT( CONTENT_ID, CONTENT_ID, CONTENT_ID )
-- note the multiple instances of ID and CONTENT_ID in the above line
-- rest assured there is nothing bizarre about the foreign table CMS_CONTENT
)
動作を示すことができる Java の例を見つけようとしています。具体的な例があれば質問を更新します。