只有在某个特定版本到位的情况下,才能执行升级命令。
这是丑陋的,但它是我可以为MySQL 5建议的。
DELIMITER $$
DROP FUNCTION IF EXISTS `Upgrade_Build`$$
CREATE FUNCTION `Upgrade_Build`(bversion INT) RETURNS varchar(30)
BEGIN
IF bversion = (SELECT MIN(`db_version`) FROM `system`) THEN
UPDATE `pages`
SET `component_parameters` =
REPLACE(`component_parameters`,'folderviewer_','folder_viewer.');
UPDATE `system`
SET `db_version` = bversion+1;
return CONCAT('Success: ',bversion,' > ',bversion+1);
ELSE
return CONCAT('Failed - Version is ',(SELECT MIN(`db_version`) FROM `system`));
END IF;
END$$
DELIMITER ;
要使用它,这样做:
SELECT Upgrade_Build(1327);
你会看到这样的事情,如果当前版本是1327:
成功:1327> 1328
运行这是第二次,你会看到:
失败 - 版本是1328
希望这对某人有用。
似乎是重复的:http://stackoverflow.com/questions/465727/raise-error-within-mysql-function/466826 – 2009-04-23 20:34:31
嗯。它是相关的,但我不确定它是一个dup,因为我从mysql控制台运行sql,并没有存储过程。但是,也许我误解了这里的差异(控制台只是基本上运行与存储过程一样的方式执行?)。 非常感谢您的链接。 – StaxMan 2009-04-24 18:17:15
可能有新的选项可以进来MySQL 6请参阅http://bugs.mysql.com/bug.php?id=35634 – KCD 2012-03-28 21:23:59