sql >> Databasteknik >  >> RDS >> Mysql

Villkorlig infogning baserat på LAST_INSERT_ID

Ditt andra försök var nästan rätt. Du måste kontrollera NULL-värden med IS NOT NULL. Så använd

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örsta kan inte fungera:

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

eftersom syntaxen för IF är

Villkorlig exekvering av uttalanden är endast möjlig i lagrade rutiner . IF-syntaxen av lagrade rutiner skulle tillåta något liknande

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

Du måste skilja de båda syntaxversionerna åt.




  1. Konvertera Oracle Trigger till MySql Trigger

  2. 8 sätt att lägga till sekunder till ett Datetime-värde i MariaDB

  3. Globalt icke-partitionerat index i Oracle

  4. Hur får man tillgängliga värden för SET-fältet?