2
respostas

Insert com multiplos valores

Alguém poderia me ajudar, como faria um insert baseado em um select dessa forma verificando se o valor ja existe , com múltiplos valores ? dessa forma esta funcionando, porem gostaria de inserir mais de 1 registro de uma vez.

      insert into  tb_rel_regra_sit_contrato
        (
              status_acordo_id,
              sit_id,
              new_sit_contrato
          )
         sSELECT 2, 9 , 9
       WHERE  NOT EXISTS
         (SELECT * FROM  tb_rel_regra_sit_contrato WHERE
                         status_acordo_id = 2 and 
                        sit_id = 9  and
                         new_sit_contrato = 9);
2 respostas

Qual o comportamento esperado?

Imagino que, caso ja exista, você espera que nada seja feito.

Nesse caso, partindo da suposição de que status_acordo_id é PK:

insert into  tb_rel_regra_sit_contrato
        (
              status_acordo_id,
              sit_id,
              new_sit_contrato
          )
 values (...), (...), (...)

ON CONFLICT (status_acordo_id) DO NOTHING

Caso status_acordo_id não seja PK e essa é apenas uma tabela de ligação, você poderia criar uma UNIQUE CONSTRAINT que abragem as colunas requeridas.

Obrigado Mateus, vou adaptar sua ideia e continuar aqui.