gpt4 book ai didi

mysql - MySQL 过程中的多个 IF 语句

转载 作者:行者123 更新时间:2023-11-29 11:42:02 24 4
gpt4 key购买 nike

我有一个过程调用将更新客户端的数据库。它看起来像这样:

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `update_database`()
begin

set @current_version := (select version from testrmaomo.dbase);

-- Only update if v4
if @current_version = '4' then

ALTER TABLE `testrmaomo`.`notification`
ADD COLUMN `senderID` VARCHAR(100) NULL COMMENT '' AFTER `ClientSMS`,
ADD COLUMN `ClickatellUser` VARCHAR(100) NULL COMMENT '' AFTER `senderID`,
ADD COLUMN `ClickatellPass` VARCHAR(100) NULL COMMENT '' AFTER `ClickatellUser`,
ADD COLUMN `ClickatellApiID` VARCHAR(100) NULL COMMENT '' AFTER `ClickatellPass`;

UPDATE testrmaomo.dbase SET Version = '5';

end if;

-- Only update if v5
if @current_version = '5' then

CREATE TABLE `testrmaomo`.`client` (
`ID` INT NOT NULL AUTO_INCREMENT COMMENT '',
`Color` VARCHAR(45) NULL COMMENT '',
`Client` VARCHAR(100) NULL COMMENT '',
`Address` VARCHAR(400) NULL COMMENT '',
`Telephone` VARCHAR(45) NULL COMMENT '',
`Mobile` VARCHAR(45) NULL COMMENT '',
`Email` VARCHAR(45) NULL COMMENT '',
PRIMARY KEY (`ID`) COMMENT '');

UPDATE testrmaomo.dbase SET Version = '6';

end if;

end$$
DELIMITER ;

我的逻辑是,如果用户的数据库是v4,它应该运行两个if语句,因为第一个if语句将更新到v5,这应该满足第二个if语句的要求。如果客户端已经是 v5,它将跳过第一个 if 语句,直接进入第二个。

由于某种原因,当我调用该过程时,它只会运行第一个 if 语句,并且只有第二次调用该过程时才会运行第二个 if 语句。

有没有办法让它在一次调用中运行?

最佳答案

你的@current_version没有更新,当然是4了。

if @current_version = '4' then 
...
UPDATE testrmaomo.dbase SET Version = '5';

--just update your variable
set @current_version = 5;
end if;

关于mysql - MySQL 过程中的多个 IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35621865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com