Pular para o conteúdo
  • Este tópico contém 4 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 10 meses atrás por David Siqueira.
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #86848
    walterjun
    Participante

      Boa tarde pessoal,

      procurei aqui no fórum mas não consegui achar, se tiver aqui no fórum por favor me enviem.
      Eu queria saber como eu faço pra descobrir se em uma tabela existente(não fui eu quem a criou) há algum índice, chave primária, e chave estrangeira?

      Desde já Obrigado!

      #86850
      Rodrigo Mesquita
      Participante

        faça um select na view User_Indexes filtrando pelo nome da tabela

        #86851
        Avatar photoRegis Araujo
        Participante

          Fala Walter..

          Para verificar quais os indices e a qual tabela ele pertence..

          Basta rodar o select abaixo..

          SELECT * FROM ALL_INDEXES;

          Mas vc quer saber que tipo de indice é este? Se é PK ou FK.. rode o select abaixo…

          SELECT * FROM ALL_CONSTRAINTS;

          ai vc pode filtrar por Owner ou por CONSTRAINT_TYPE..
          onde R quer dizer REFERENCE.. então é uma FK e P quer dizer PRIMARY então.. é uma PK..

          Abraços..

          #86853
          walterjun
          Participante

            Fala aew Thunder_Catz,

            pow consegui com os comandos que você me disse mas surgiu outro problema, na tabela all_index não vem me relacionando qual coluna da minha tabela que o índice se referencia.
            Tem como eu pegar essa informação?

            vlw msm Thunder_Catz 😛

            #86855
            David Siqueira
            Participante

              Opa!!..salve todo mundo..
              Ai Walter pega esse aqui que te atende:

              set feed off ver off wrap off recsep off ARRAY 1 lines 150 pages 20000
              break on unq on index_name skip 1
              col unq format a1 heading 'U'
              col index_name format a60 heading 'Nome da Tabela . Nome do Indice' wra
              col column_name format a30 heading 'Nome da Coluna' wra
              col tipo format a10 heading 'Tipo'
              col tamanho format a5 heading 'Tam.'
              col nulo format a3 heading 'Nul'
              col pos form 999 heading 'Pos.'
              accept t prompt "Nome da Tabela ou (Enter)=Todas ...................: "
              accept i prompt "Nome do Indice ou (Enter)=Todos ...................: "
              accept p prompt "Nome do Usuario ou (Enter)=Todos ou (Enter)=Usuario.: "
              --spool lst/indices.lst
              select substr(a.uniqueness,1,1) unq, i.table_name||'.'||i.index_name
              as index_name, i.column_name,
              decode(c.data_type,'NUMBER',decode(c.data_length,0,'LONG','NUMBER'),
              c.data_type) tipo,
              decode(c.data_type,'NUMBER',to_char(c.data_precision),'DATE',NULL,
              to_char(c.data_length))
              ||decode(c.data_scale,0,null,null,null,','||ltrim(to_char(c.data_scale))) tamanho, decode(c.nullable,'N','Not') nulo
              ,i.COLUMN_POSITION pos
              from all_indexes a, all_tab_columns c, all_ind_columns i
              where i.table_owner = c.owner
              and upper(i.table_name) = upper(c.table_name)
              and upper(i.column_name) = upper(c.column_name)
              and i.table_owner like decode(upper('&p'),'ALL','%',null,user,upper('&p'))
              and upper(i.table_name) like nvl(upper('&t'),'%')
              and i.index_name like nvl(upper('&i'),'%')
              and a.owner = i.index_owner
              and a.index_name = i.index_name
              order by i.index_name, i.column_position;
              --spool off
              @init

              Abraço.

              David

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.