sql >> データベース >  >> RDS >> Mysql

MySQLストアドプロシージャ構文IFelse

    あなたのIF 構文が正しくありません。次のようになります:

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

    ただし、重複を許可しない場合は、(MatchID, UserID) Betslipsのエントリ 、UNIQUEを定義してみませんか これらの列に制約を加えてから、 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. 単一の列の値を複数の列の値に分割するにはどうすればよいですか?

    2. MySQLUNIXタイムスタンプで時差を取得する方法

    3. MySQLの外部キーの正確な意味'削除制限'句

    4. 一意でないタイムスタンプで時間分割を使用してTimescaleDBHypertableを作成するにはどうすればよいですか?