Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Inserção Condicional do MySQL


Se o seu DBMS não impõe limitações em qual tabela você seleciona ao executar uma inserção, tente:
INSERT INTO x_table(instance, user, item) 
    SELECT 919191, 123, 456
        FROM dual
        WHERE NOT EXISTS (SELECT * FROM x_table
                             WHERE user = 123 
                               AND item = 456)

Neste, dual é uma tabela com apenas uma linha (encontrada originalmente no Oracle, agora também no mysql). A lógica é que a instrução SELECT gera uma única linha de dados com os valores necessários, mas somente quando os valores ainda não foram encontrados.

Como alternativa, observe a instrução MERGE.