プライマリキー名を使用して2番目のカラムとしてユーザテーブルの名前を表示するにはどうすればいいですか?テーブルのプライマリキーの名前を取得
私は仕事の半分をしていますが、もっと何をすべきかはわかりません。
select table_name from user_tables ORDER BY (table_name) ASC
どのように知っていますか?
は
プライマリキー名を使用して2番目のカラムとしてユーザテーブルの名前を表示するにはどうすればいいですか?テーブルのプライマリキーの名前を取得
私は仕事の半分をしていますが、もっと何をすべきかはわかりません。
select table_name from user_tables ORDER BY (table_name) ASC
どのように知っていますか?
は
この単純なクエリでは、あなたのPK制約名(ただし、列名)と一緒にテーブルのリストを与える:
select ut.table_name, uc.constraint_name
from user_tables ut
left join user_constraints uc
on ut.table_name = uc.table_name
and uc.constraint_type = 'P';
あなたは、列名をしたい場合は、PKは複数の列を持つことができることを覚えておいてください!ネストされたタブの書式が気に入らない場合、あなたが入力としてNTを取るユーティリティ関数を書くことができます
create type ty_varchar_nt as table of varchar2(4000);
select ut.table_name, uc.constraint_name, cast(collect (uic.column_name) as ty_varchar_nt) as pk_cols
from user_tables ut
left join user_constraints uc
on ut.table_name = uc.table_name
and uc.constraint_type = 'P'
left join user_ind_columns uic
on uc.index_name = uic.index_name
group by ut.table_name, uc.constraint_name;
:我々は理由コレクト()集約関数の最初の効用型を作成する必要があります連結されたカンマ区切りの文字列を出力として提供します。ちょうどそれを自分自身を行うための時間を持っていない;)
がUSER_CONSTRAINTSでUSER_TABLESに参加してみていただきありがとうございます。 USER_CONSTRAINTSフィルタにおいて
CONSTRAINT_TYPE有するすべての行は、 'P'(主キー)に等しいです。そこにindex_nameとindex_ownerの値をUSER_INDEXESと結合でき、PRIMARY KEYから列名を取得できます。
私はこれを行うもっと簡単な方法を知りたがっていればいいと思います...しかし、私はしません。
幸運を祈る!
あなたは、「ユーザーテーブル名」で何を意味するか、次のクエリ
SELECT cols.table_name, cols.column_name, cols.position, cons.status, cons.owner
FROM all_constraints cons, all_cons_columns cols
WHERE cons.constraint_type = 'P'
AND cons.constraint_name = cols.constraint_name
AND cons.owner = cols.owner
ORDER BY cols.table_name, cols.position;
を使用することができますか? – rogeriopvl
特定のユーザーによって作成されたテーブルの名前(私はoracleで作業しているので、ユーザーごとにスキーマのようなものが作成されます)。 – Sheldon