Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Sintaks prosedur tersimpan MySQL JIKA lain

IF . Anda sintaks tidak benar. Seharusnya:

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;;

Namun, jika Anda tidak akan pernah mengizinkan duplikat (MatchID, UserID) entri di Betslips . Anda , mengapa tidak mendefinisikan UNIQUE kendala di kolom tersebut dan kemudian gunakan 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. Bagaimana menemukan kata-kata berulang dari sel dalam SQL

  2. Pernyataan yang disiapkan MYSQLI tidak menghasilkan keluaran

  3. Mengelola Database MySQL di cPanel dengan PHPMyAdmin

  4. MySQL menghapus catatan duplikat tetapi tetap terbaru

  5. Penyortiran MYSQL berdasarkan jarak MEMILIKI tetapi tidak dapat mengelompokkan?