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

MySQL insere apenas se uma condição for verdadeira


Você pode usar um WHERE cláusula para isso. Converta seus INSERT VALUES em um INSERT SELECT e adicione um WHERE cláusula.

Por exemplo,
Campos
INSERT INTO fields (field_name, control_type_id, needs_approval)
SELECT
'Array Photos', 3, 0
WHERE Condition;

Se Condition for true, ele inserirá a linha. Se Condição for falsa, o SELECT retornará zero linhas e, portanto, o INSERT inserirá zero linhas.

Se a consulta acima não for executada devido a um erro de sintaxe, você pode, como @spencer7593 mencionou, adicionar FROM DUAL .
INSERT INTO fields (field_name, control_type_id, needs_approval)
SELECT
'Array Photos', 3, 0
FROM DUAL
WHERE Condition;

O DUAL table é essencialmente uma tabela fictícia que tem conteúdo previsível e pode ser confiável para sempre ter pelo menos uma linha .