Mysql
 sql >> база данни >  >> RDS >> Mysql

Условно вмъкване въз основа на LAST_INSERT_ID

Вторият ви опит беше почти правилен. Трябва да проверите стойностите NULL с IS NOT NULL. Затова използвайте

INSERT INTO EVENTDETAILS (EVENT_ID, ITEMNAME, ITEMVALUE)
SELECT @EVENT_ID, 'Notes', 'WO#89574' FROM DUAL
WHERE @EVENT_ID IS NOT NULL;  -- instead 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 != 

Първият не може да работи:

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

защото синтаксисът на IF е

Условното изпълнение на изрази е възможно само в съхранени процедури . IF синтаксис на съхранените рутинни процедури биха позволили нещо като

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

Трябва да разграничите тези две версии на синтаксиса.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използвайте MySQL релационни бази данни във Fedora 13

  2. Как да използвам XPATH в MySQL select?

  3. ColdFusion параметризиране на заявка

  4. mysql 5.0 индексира ли нулеви стойности?

  5. Въведете моя php в mysql без повторение?