SQL PLUS - encontrar tabelas
Quando eu clico com o botão direito do mouse sobre uma tabela e clico em "VIEW", aparece algumas informações sobre a tabela, tais como: informações gerais, colunas, chaves (primárias e estrangeiras), etc.
Qual minha dúvida?
Tenho uma tabela chamada "CPR_CADMATERIALAVULSO" e preciso saber em quais outras tabelas, a chave primária da CPR_CADMATERIALAVULSO se relaciona.
Tem algum código ou maneira de se saber isso?
Desde já, agradeço a atenção.
Atenciosamente,
Qual minha dúvida?
Tenho uma tabela chamada "CPR_CADMATERIALAVULSO" e preciso saber em quais outras tabelas, a chave primária da CPR_CADMATERIALAVULSO se relaciona.
Tem algum código ou maneira de se saber isso?
Desde já, agradeço a atenção.
Atenciosamente,
Flavio Silva
Curtidas 0
Respostas
Flavio Silva
13/12/2012
Pessoal, fiz um script mais ou menos assim, porém não me retornou nada.
SELECT f.owner,
f.table_name,
f.constraint_name
FROM all_constraints f
WHERE (f.r_owner, f.r_constraint_name) IN
(
SELECT p.owner,
p.constraint_name
FROM all_constraints p
WHERE p.owner = upper('globus')
AND p.table_name = upper('Cpr_Cadmaterialavulso')
);
GOSTEI 0
Jair N.
13/12/2012
Acredito que o que você está querendo seria algo parecido com:
SELECT user_cons_csc.constraint_name AS nome_chave
, CAST(CASE WHEN (user_constraints.constraint_type = 'P')
THEN user_constraints.constraint_type
ELSE 'F' END AS CHAR(1)) AS tipo_chave
, CAST(CASE WHEN (user_constraints.constraint_type = 'P')
THEN user_constraints.table_name
ELSE user_cons_cfc.table_name END AS VARCHAR2(50)) AS nome_table
, user_cons_csc.column_name AS org_campos
, user_cons_cfc.column_name AS dst_campos
FROM user_constraints
INNER JOIN user_cons_columns user_cons_csc
ON (user_cons_csc.owner = user_constraints.owner)
AND (user_cons_csc.table_name = user_constraints.table_name)
AND (user_cons_csc.constraint_name = user_constraints.constraint_name)
LEFT JOIN user_cons_columns user_cons_cfc
ON (user_cons_cfc.owner = user_constraints.r_owner)
AND (user_cons_cfc.position = user_cons_csc.position)
AND (user_cons_cfc.constraint_name = user_constraints.r_constraint_name)
WHERE (user_constraints.table_name = UPPER('<nome_da_sua_tabela_principal>'))
AND (user_constraints.constraint_type IN ('P','R'))
ORDER BY user_constraints.constraint_type
, user_constraints.constraint_name
, user_cons_csc.position
SELECT user_cons_csc.constraint_name AS nome_chave
, CAST(CASE WHEN (user_constraints.constraint_type = 'P')
THEN user_constraints.constraint_type
ELSE 'F' END AS CHAR(1)) AS tipo_chave
, CAST(CASE WHEN (user_constraints.constraint_type = 'P')
THEN user_constraints.table_name
ELSE user_cons_cfc.table_name END AS VARCHAR2(50)) AS nome_table
, user_cons_csc.column_name AS org_campos
, user_cons_cfc.column_name AS dst_campos
FROM user_constraints
INNER JOIN user_cons_columns user_cons_csc
ON (user_cons_csc.owner = user_constraints.owner)
AND (user_cons_csc.table_name = user_constraints.table_name)
AND (user_cons_csc.constraint_name = user_constraints.constraint_name)
LEFT JOIN user_cons_columns user_cons_cfc
ON (user_cons_cfc.owner = user_constraints.r_owner)
AND (user_cons_cfc.position = user_cons_csc.position)
AND (user_cons_cfc.constraint_name = user_constraints.r_constraint_name)
WHERE (user_constraints.table_name = UPPER('<nome_da_sua_tabela_principal>'))
AND (user_constraints.constraint_type IN ('P','R'))
ORDER BY user_constraints.constraint_type
, user_constraints.constraint_name
, user_cons_csc.position
Pessoal, fiz um script mais ou menos assim, porém não me retornou nada.
SELECT f.owner,
f.table_name,
f.constraint_name
FROM all_constraints f
WHERE (f.r_owner, f.r_constraint_name) IN
(
SELECT p.owner,
p.constraint_name
FROM all_constraints p
WHERE p.owner = upper('globus')
AND p.table_name = upper('Cpr_Cadmaterialavulso')
);
GOSTEI 0