Pular para o conteúdo
  • Este tópico contém 3 respostas, 3 vozes e foi atualizado pela última vez 11 anos, 6 meses atrás por Avatar de Fábio PradoFábio Prado.
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #105348
    Avatar de DougDoug
    Participante

      Pessoal, bom dia.

      Há muito tempo li uma materia sobre indices com nomes estranhos no Oracle. Estou precisando explicar isso a uma pessoa, mas eu nao me lembro o motivo pelo qual o Oracle me cria um indice com esse nome por exemplo : CREATE UNIQUE INDEX “MAXTAX”.“SYS_C0017753” ON “MAXTAX”.”REPORT

      Creio que seja um erro na hora da criação, mas nao sei o real motivo. Seria causa, o comando ser executado pelos user sys ou system ?

      abs

      #105350
      Avatar de rmanrman
      Participante

        @Doug

        Creio que não seja nenhum erro, isso acontece dependendo como você cria o índice. Toda PRIMARY KEY cria um índice automático, mas existe várias formas de criar a PRIMARY KEY.

        Veja:

        1-

        CREATE TABLE PESSOAS(
        ID NUMBER
        ,NOME VARCHAR2(32)
        ,PRIMARY KEY (ID)
        );

        2-

        CREATE TABLE PESSOAS(
        ID NUMBER PRIMARY KEY
        ,NOME VARCHAR2(32)
        );

        3-

        CREATE TABLE PESSOAS(
        ID NUMBER
        ,NOME VARCHAR2(32)
        );

        ALTER TABLE PESSOAS ADD CONSTRAINT PK_PESSOAS PRIMARY KEY(ID);

        No caso 1 e 2 não foi definido o nome da constraint, logo o Oracle atribui aquele “nome estranho”, o mesmo “nome estranho” é atribuido para a PRIMARY KEY e para o índice.

        No caso 3 isso não ocorre pois foi especificado o nome da constraint. Eu utilizo o modo 3 para melhor documentar os nomes das constraints.

        #105351
        Avatar de DougDoug
        Participante

          @rman, blz meu brother ?

          Eu entendi..ate fuçando aqui reparei que na aplicação, geralmente tabelas com campos blob, clob ou lob, o oracle denomina esse “nome estranho”.

          Criei uma table.

          create table teste
          (id varchar2(10),
          nome blob)

          create unique index pk_id on teste (id) tablespace msafx

          Ao fazer select na dba_indexes, me retornou.
          INDEX_NAME TABLE_NAME
          SYS_IL0000107605C00002$$ TESTE

          OBRIGADO…

          #105367
          Avatar de Fábio PradoFábio Prado
          Participante

            @Doug,

            Só para complementar as respostas, o nome estranho que vc se referiu é um nome gerado automaticamente pelo Oracle e que é sempre composto por “SYS_” + um valor alfanumérico único por BD.

            []s

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