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

Inserção condicional com base em LAST_INSERT_ID


Sua segunda tentativa foi quase certa. Você tem que verificar os valores NULL com IS NOT NULL. Então use
INSERT INTO EVENTDETAILS (EVENT_ID, ITEMNAME, ITEMVALUE)
SELECT @EVENT_ID, 'Notes', 'WO#89574' FROM DUAL
WHERE @EVENT_ID IS NOT NULL;  -- instead of != 

ou
INSERT INTO EVENTDETAILS (EVENT_ID, ITEMNAME, ITEMVALUE)
SELECT t.* FROM (
    SELECT @EVENT_ID, 'Notes', 'WO#89574'
) t
WHERE @EVENT_ID IS NOT NULL;  -- instead of != 

O primeiro não pode funcionar:
-- THIS DOES NOT WORK
SELECT IF(@EVENT_ID != null, 
    INSERT INTO EVENTDETAILS (EVENT_ID, ITEMNAME, ITEMVALUE) ...

porque a sintaxe de IF é

A execução condicional de instruções só é possível em rotinas armazenadas . A sintaxe SE de rotinas armazenadas permitiria algo como
IF @EVENT_ID IS NOT NULL THEN
    INSERT INTO EVENTDETAILS (EVENT_ID, ITEMNAME, ITEMVALUE) ...
END IF

Você tem que distinguir essas duas versões de sintaxe.