2009-05-15 8 views
1

私はOracleに慣れていません。私はOracleのスクリプトと同等のものを用意する必要があります。このt-sqlスクリプトを変換するには?

スクリプト:


SELECT COL_NAME(parent_object_id, parent_column_id) AS ForigneKeyField, 
     COL_NAME(referenced_object_id, referenced_column_id) AS PrimaryKeyField, 
     OBJECT_NAME(referenced_object_id) AS PrimaryTable 
FROM sys.foreign_key_columns 
WHERE parent_object_id = OBJECT_ID(@name) 

答えて

3

ので、私はT-SQLに慣れていないが、私は、Oracleに精通しています:

あなたが与えられたため、すべての参照整合性制約のためにデータ・ディクショナリを照会している表示されます表、およびそれぞれについて、外部キー・フィールド、およびそれらが参照する表の関連フィールドおよび表を報告します。

この情報は、ALL_CONSTRAINTSおよびALL_CONS_COLUMNSデータ・ディクショナリ・ビュー(または問合せの範囲に応じてDBA_CONSTRAINTS/DBA_CONS_COLUMNS or USER_CONSTRAINTS/USER_CONS_COLUMNS)に保持されます。私は参照制約が連結キーを伴う場合に便利ですクエリ内の制約名(ForeignConstraintとReferencedConstraint)を追加しました

SELECT fc.constraint_name AS ForeignConstraint 
     ,fc.r_constraint_name AS ReferencedConstraint 
     ,fcc.column_name  AS ForeignKeyField 
     ,rcc.column_name  AS ReferencedKeyField 
     ,rc.table_name  AS ReferencedTable 
FROM sys.all_constraints fc 
     ,sys.all_constraints rc 
     ,sys.all_cons_columns fcc 
     ,sys.all_cons_columns rcc 
WHERE fc.table_name  = :name 
AND fc.constraint_type = 'R' 
AND fc.r_constraint_name = rc.constraint_name 
AND fc.constraint_name = fcc.constraint_name 
AND rc.constraint_name = rcc.constraint_name 
AND fcc.position   = rcc.position 
ORDER BY fc.constraint_name, fcc.position; 

:私はこのようなクエリを実行します。

関連する問題