Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chèn có điều kiện dựa trên LAST_INSERT_ID

Lần thử thứ hai của bạn đã gần đúng. Bạn phải kiểm tra các giá trị NULL với IS NOT NULL. Vì vậy, hãy sử dụng

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

hoặc

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

Cái đầu tiên không thể hoạt động:

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

vì cú pháp của IF

Chỉ có thể thực thi có điều kiện các câu lệnh trong các quy trình được lưu trữ . Cú pháp IF quy trình được lưu trữ sẽ cho phép một cái gì đó như

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

Bạn phải phân biệt cả hai phiên bản cú pháp đó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tiếp tục cho XID được nâng lên 0:không xác định

  2. Cách lấy tên tháng ngắn từ ngày trong MySQL

  3. Lỗi quyền Mysql với 'tải dữ liệu'

  4. Không tìm thấy trình điều khiển Jdbc

  5. Làm cách nào để ghi đè thuộc tính của khóa chính tăng tự động khi chèn giá trị vào bảng MySQL?