Whoot 0 Denunciar post Postado Janeiro 6, 2006 O problemas é que não conheço o relacionamento, que dizer, tem varias tabelas mas não sei como achar qual esta sendo a da chave estrangeira....como posso descobrir isso? e se possivel como posso deletar um registro sem q de erro dizendo q tem uma chave estrangeira?Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Whoot 0 Denunciar post Postado Janeiro 6, 2006 Ex: Nome do Banco de dados: PROJETOnome da TAbela que conheço, a aqual querdo apagar o resitroou saber os relacionamnetos:tabela: Usuarios Compartilhar este post Link para o post Compartilhar em outros sites
NaPraia 12 Denunciar post Postado Janeiro 7, 2006 Veja com alguém do seu trabalho, qual é a tabela principal, no caso, deve ser a que tem o maior número de campos. Ou se não, querendo excluir a tabela, dê um drop table, se ela não excluir, veja qual é a chave primária e3 vá assim por diamte. Compartilhar este post Link para o post Compartilhar em outros sites
r2_d2 0 Denunciar post Postado Janeiro 7, 2006 ...tem varias tabelas mas não sei como achar qual esta sendo a da chave estrangeira....como posso descobrir isso?Dá uma olhada na tabela USER_CONSTRAINTS. É ela que guarda esse tipo de informação.Para ver as FK faça o seguinte:SELECT TABLE_NAME AS TABELA, CONSTRAINT_NAME AS NOME, CONSTRAINT_TYPE AS TIPOFROM USER_CONSTRAINTSWHERE CONSTRAINT_TYPE = 'R';As constraints são exibidas da seguinte forma:P = Primary KeyR = Foreign KeyC = CheckU = UniqueDê um "DESC USER_CONSTRAINTS" para ver outras informações. Compartilhar este post Link para o post Compartilhar em outros sites
Whoot 0 Denunciar post Postado Janeiro 9, 2006 Valeu galera....r2d2 boa! era isso q eu precisava! Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Janeiro 16, 2006 Rapaz, Dê um SELECT nessa view, DBA_CONS_COLUMNS, ela tem informações sobre QUAL coluna foi feita uma constraint, e fazendo um JOIN com a DBA_CONSTRAINTS, você terá qual o tipo de constraints ela é. Exemplo: SQL > SELECT a.constraint_name, a.constraint_type, a.table_name, a.status, b.column_name 2 FROM dba_constraints a, dba_cons_columns b 3 WHERE a.constraint_name=b.constraint_name and a.owner=b.owner; Abraços, http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites
MonTiLLa 1 Denunciar post Postado Janeiro 16, 2006 Galera, Tinha esse mesmo problema e resolvi fazer um script... Ai vai: -- -- ACHANDO O NOME EXATO DA TABELA QUE EXISTE A LIGACAO DAS TABELAS -- set serveroutput on DECLARE var_r_constraint_name VARCHAR2(40); var_tabela VARCHAR2(60); var_constraint_name VARCHAR2(40); var_nomeDaColuna VARCHAR2(60); var_nomeDaColuna2 VARCHAR2(60); var_exception number; BEGIN -- -- NOME DA CONSTRAINT -- var_constraint_name := 'SYS_C00132827'; var_tabela := null; var_exception := 1; FOR nomeContraint IN (select * from user_constraints where constraint_name = var_constraint_name and r_constraint_name is not null) LOOP SELECT table_name, r_constraint_name INTO var_tabela, var_r_constraint_name FROM user_constraints where constraint_name = nomeContraint.r_constraint_name; SELECT column_name into var_nomeDaColuna FROM user_Cons_Columns where constraint_name = nomeContraint.constraint_name; SELECT column_name into var_nomeDaColuna2 FROM user_Cons_Columns where constraint_name = nomeContraint.r_constraint_name; Dbms_Output.Put_Line('-------------------------------------------'); Dbms_Output.Put_Line('-- As tabelas se ligam da seguinte forma --'); Dbms_Output.Put_Line('-------------------------------------------'); Dbms_Output.Put_Line('--'); Dbms_Output.Put_Line(rPad(nomeContraint.table_name,30,' ')||rPad(' ('||var_nomeDaColuna||')',40,' ')); Dbms_Output.Put_Line(rPad(var_tabela,30,' ')||rPad(' ('||var_nomeDaColuna2||')',40,' ')); Dbms_Output.Put_Line('--'); Dbms_Output.Put_Line('-------------------------------------------'); Dbms_Output.Put_Line('A chave estrangeira(FK) de '||nomeContraint.table_name||' e '||var_constraint_name); Dbms_Output.Put_Line('-------------------------------------------'); Dbms_Output.Put_Line('A chave primaria(PK) da tabela '||var_tabela||' e '||nomeContraint.r_constraint_name); Dbms_Output.Put_Line('-------------------------------------------'); var_exception := 0; END LOOP; begin SELECT table_name into var_tabela FROM user_constraints where constraint_name = var_constraint_name; exception when no_data_found then var_tabela := null; end; IF (var_tabela is not null and var_exception = 1) THEN Dbms_Output.Put_Line('-------------------------------------------'); Dbms_Output.Put_Line('-- A CONSTRAINT '||var_constraint_name||' e chave primaria da tabela '||var_tabela); Dbms_Output.Put_Line('-------------------------------------------'); elsif (var_tabela is null and var_exception = 1) then Dbms_Output.Put_Line('-------------------------------------------'); Dbms_Output.Put_Line('-- Não existe ligação no banco para a CONSTRAINT: '||var_constraint_name); Dbms_Output.Put_Line('-- Tente novamente com outra constraint !'); Dbms_Output.Put_Line('-------------------------------------------'); END IF; END; / OBS: nao esquecam de colocar o nome da constraint na variavel var_constraint_name http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Janeiro 17, 2006 Bruno, Cara, legal seu script. Tu pode criar um tópico no SUB-FÓRUM de SCRIPTS. Deste modo, várias pessoas poderão ter acesso ao seu script. Coloque seus créditos. Abraços, http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites