作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
伙计们,我找不到这个问题的解决方案,它总是给出我尝试过的语法错误...你能帮我看看吗,谢谢
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
我只想在插入之前检查表中是否存在数据,并且我不能使用“重复键更新”,因为我的主键没有任何意义,它的表中我放入了 2-3 个外键。 ...
最佳答案
您的 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;
关于MySQL 存储过程语法 IF else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12334026/
我是一名优秀的程序员,十分优秀!