帮助在mysql中创建自定义自动增量函数

时间:2009-09-07 22:04:48

标签: mysql data-modeling auto-increment

我想创建一个自动增量函数,它允许我在多个表的指定列中保持唯一性。

我知道mysql的标准函数不支持这个,但看起来这可以手工完成。有人能指出我正确的方向吗?

由于

3 个答案:

答案 0 :(得分:1)

你有几个选择。一,你可以将id设为UUID(36 + varchar字段),并使用MySQL的UUID()函数。另一种选择是使用表作为序列生成表的一种,允许您使用auto_increment功能,并且只使用在其他地方作为密钥插入此表时生成的任何内容。

就个人而言,我会选择UUID,因为这是拥有全球唯一标识符的一种非常常见的方式。一句警告:您可能最好用客户端的语言生成这些UID,而不是使用MySQL的实现。

答案 1 :(得分:0)

将列(ID)设置为primary / unique和auto_increment会出现什么问题?

ps:此外,如果您需要多个表之间的唯一性,那么您可能正在做错误的事情。

答案 2 :(得分:0)

认为这可能是这样的

delimiter $$
CREATE PROCEDURE myProc()
BEGIN
DECLARE mid INT;
START TRANSACTION;
select MAX(id) + 1 INTO mid (  SELECT id FROM tbl1 UNION ALL SELECT id from tbl2 ... ) tbls;
INSERT INTO <somt_tbl> VALUES ( mid, ... ); 
COMMIT;
END$$