伙计们,我找不到解决这个问题的办法,不管我怎么尝试,它总是给出语法错误…你能帮我看一下吗,谢谢
create procedure SP_Insert(in MatchIDP int,in TipID int, in User int)
begin
if exists(
select BetSlipID from betslips where MatchID = MatchIDP and UserID = User)
(
update Betslips set TipID = 2
)
else
(
insert into Betslips (MatchID,TipID , UserID) value (MatchIDP,TipID,User)
)
end if
end我只想在插入之前检查表中是否存在数据,并且我不能使用"On duplicate key update“,因为我的主键没有任何意义,它的表中我放入了2-3个外键……
发布于 2012-09-09 04:08:09
您的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;;但是,如果您永远不允许在Betslips中存在重复(MatchID, UserID)条目,为什么不跨这些列定义一个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;发布于 2012-09-09 04:10:49
CREATE PROCEDURE SP_Insert (IN MatchIDP INT, IN TipID INT, IN USER INT)
BEGIN
DECLARE existing INT DEFAULT NULL;
SELECT BetSlipID
INTO existing
FROM betslips
WHERE MatchID = MatchIDP
AND UserID = USER;
IF existing is not null THEN
UPDATE Betslips SET TipID = 2;
ELSE
INSERT INTO Betslips (MatchID, TipID, UserID)
VALUES (MatchIDP, TipID, USER);
END IF;
ENDhttps://stackoverflow.com/questions/12334026
复制相似问题