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

Cú pháp thủ tục được lưu trữ trong MySQL NẾU khác

IF của bạn cú pháp không chính xác. Nó phải là:

delimiter ;;

create procedure SP_Insert(in MatchIDP int,in TipID int, in User int)
begin

if exists(
  select * from betslips where MatchID = MatchIDP and UserID = User
) then
  update Betslips set TipID = 2; -- where ?
else
  insert into Betslips (MatchID,TipID , UserID) values (MatchIDP, TipID, User);
end if;

end;;

Tuy nhiên, nếu bạn không bao giờ cho phép (MatchID, UserID) trùng lặp các mục nhập trong Betslips của bạn , tại sao không xác định một UNIQUE ràng buộc trên các cột đó và sau đó sử dụng INSERT ... ON DUPLICATE KEY UPDATE :

ALTER TABLE Betslips ADD UNIQUE INDEX (MatchID, UserID);

INSERT INTO Betslips (MatchID, TipID, UserID) VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE TipID = 2;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chuyển một lát [] sang điều kiện IN trong một câu lệnh SQL đã chuẩn bị sẵn với điều kiện không phải IN?

  2. Mất kết nối với máy chủ MySQL trong khi truy vấn

  3. Quyền truy cập WordPress

  4. Lựa chọn dựa trên đường dẫn trong mysql

  5. PDOException SQLSTATE [HY000] [2002] Không có tệp hoặc thư mục nào như vậy