我有一个必须由MySql(v5.1.72)存储过程执行的任务。 该任务包括几个步骤:
此程序还有一些额外的限制:
没有额外的表可以解决这个问题吗? 如果没有,如何以最好的方式做到这一点?
答案 0 :(得分:0)
我会创建一个具有额外列名Guid的表,类型为CHAR(38)。
像这样。
CREATE TABLE `test_table` (
`TestId` int(11) NOT NULL,
`Value` varchar(45) DEFAULT NULL,
`Value1` varchar(45) DEFAULT NULL,
`Guid` char(38) NOT NULL,
PRIMARY KEY (`TestId`),
KEY `Guid` (`Guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
索引KEY Guid (Guid)
将有助于SP更快地处理数据。
如果您在程序中定义了一个golbal变量
DECLARE v_Guid CHAR(38);
然后你可以像这样设置值
SET v_Guid = SELECT UUID();
这会返回一个像18d2e4ea-5d8c-11e3-b923-00ff90aef4a9
这样的字符串。
现在,您可以对您所做的每个操作使用此值v_Guid
。 SELECT
,INSERT
或DELETE
。
以后想要删除行时。你刚刚执行
DELETE FROM test_table WHERE Guid=v_Guid;
以这种方式,即使程序运行并且彼此重叠,SP也可以使用相同的表。您永远不会DROP
该表,只需删除包含相关GUID
的行。
你有没有考虑过这样的事?