只有在某個特定版本到位的情況下,才能執行升級命令。
這是醜陋的,但它是我可以爲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