Pular para o conteúdo
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #94138
    silverwal
    Participante

      Boa tarde, alguem poderia me ajudar tenho as seguintes tabelas
      tabela A, colunas ID(primay key), nome.
      tabela B, colunas ID(primarykey), ID_A(foreingKEY ta tabela a), principal(boleano) e nome.

      bom como faria para na tabela b o ID_A só pode ter um true na coluna principal e varios falses como fazer essa amarração?

      #94140
      Avatar photoLeonardo Litz
      Participante

        Poderia explicar melhor, ficou meio confuso.

        #94142
        silverwal
        Participante

          [quote=”Litz”:3prnvl7m]Poderia explicar melhor, ficou meio confuso.[/quote]

          bom tenho a tabela de clientes
          onde contem id, nome, regiao,cnpj
          tenho outra tabela de telefones
          onde contem id, cliente_id, celular, principal, descricao

          qual é o problema eu tenho varios celulares para um cliente.
          porem só um dos celulares podera ser o principal (para uma futura listagem), ou seja eu tenho varios celulares posso ter apenas um principal mais varios que nao sejem.
          meu campo principal e boleano qual for principal e true e quando nao for e falso.
          resumindo eu quero ter apenas um valor verdadeiro para cada cliente_id

          #94143
          Avatar photoLeonardo Litz
          Participante

            Via integridade de banco não dá para fazer isso.

            Você pode fazer um trigger de AFTER UPDATE para validar isso, faça um select para buscar telefones principais por cliente, se existir vc retorna o erro, creio que essa trigger terá que ser de AUTONOMOUS TRANSACTION.

            Valeu Leonardo Litz

            #94222
            burga
            Participante

              Da pra fazer com function based unique index.

              Uma coisa parecida com isso:

              create unique index nome_do_indice on tabela_de_contatos (cliente_id * DECODE(principal,1,1,null));

              Isso deve resolver teu problema… Só estou dando a idéia, não testei o código então ele pode ter algum erro.

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