2

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

我知道这在 mysql 的标准函数下不受支持,但似乎可以手动完成。有人能指出我正确的方向吗?

谢谢

4

3 回答 3

2

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

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

于 2009-09-07T22:30:13.793 回答
0

将列(ID)设置为主要/唯一和自动增量有什么问题?

ps:此外,如果您需要多个表之间的唯一性,那么您可能做错了什么。

于 2009-09-07T22:52:09.767 回答
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$$
于 2009-09-08T06:26:01.320 回答