sql >> Database teknologi >  >> RDS >> Mysql

Betinget indsættelse baseret på LAST_INSERT_ID

Dit andet forsøg var næsten rigtigt. Du er nødt til at tjekke NULL-værdier med IS NOT NULL. Så brug

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

eller

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

Den første kan ikke fungere:

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

fordi syntaksen for IF er

Betinget udførelse af udsagn er kun mulig i lagrede rutiner . IF-syntaksen af lagrede rutiner ville tillade noget lignende

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

Du er nødt til at skelne mellem de to syntaksversioner.




  1. Postgres - fjern element fra jsonb-array

  2. er en midlertidig mysql-tabel unik for hver bruger, der får adgang til scriptet, der opretter den...?

  3. Sådan håndterer du store mysql-forespørgsler

  4. Hvordan kan jeg tjekke en Python unicode-streng for at se, at den *faktisk* er korrekt Unicode?