Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wstawianie warunkowe na podstawie LAST_INSERT_ID

Twoja druga próba była prawie właściwa. Musisz sprawdzić wartości NULL za pomocą IS NOT NULL. Więc użyj

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

lub

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

Pierwsza z nich nie działa:

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

ponieważ składnia IF jest

Warunkowe wykonanie instrukcji jest możliwe tylko w procedury przechowywane . składnia IF przechowywanych procedur pozwoliłoby na coś takiego jak

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

Musisz rozróżnić te obie wersje składni.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Symbol wieloznaczny MySQL w wyborze

  2. Jak monitorować wiele instancji MySQL działających na tym samym komputerze — porady i wskazówki dotyczące ClusterControl

  3. Wiele warunków AND MySQL

  4. Jak działa parse_dates z pd.read_sql_query?

  5. SQL Server odpowiednik funkcji substring_index w MySQL