sql >> Database >  >> RDS >> Mysql

Voorwaardelijk invoegen op basis van LAST_INSERT_ID

Je tweede poging was bijna goed. U moet de NULL-waarden controleren met IS NOT NULL. Dus gebruik

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

of

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 != 

De eerste kan niet werken:

-- THIS DOES NOT WORK
SELECT IF(@EVENT_ID != null, 
    INSERT INTO EVENTDETAILS (EVENT_ID, ITEMNAME, ITEMVALUE) ...

omdat de syntaxis van IF is

Voorwaardelijke uitvoering van instructies is alleen mogelijk in opgeslagen routines . De IF-syntaxis van opgeslagen routines zou zoiets toelaten als

IF @EVENT_ID IS NOT NULL THEN
    INSERT INTO EVENTDETAILS (EVENT_ID, ITEMNAME, ITEMVALUE) ...
END IF

Je moet die beide syntaxisversies onderscheiden.




  1. TypeORM subquery's

  2. Dynamische SQL met behulp van configuratietabellen

  3. probleem met apex_application_temp_files

  4. Databaserecords groeperen in tijdsintervallen van 15 minuten