如何为多个表中的行实现唯一的自动递增id?

时间:2013-05-02 11:25:14

标签: mysql primary-key auto-increment

我在数据库中有几个表,假设它们被称为table1,表2等。 所有表都有一个主键列'id',具有自动增量。

在我当前的配置中,当插入到table1时,生成的id为1。 之后,当插入table2时,生成的id也恰好为1。

如何在数据库中的所有表中强制使用绝对唯一的ID?我想在插入table1时,生成的id为1,如果之后插入table2,生成的id为2?

我在某台机器上使用了mysql服务器并且没有这个问题,但是当我在本地机器上安装mysql时,它开始出现了。所以我想它必须是某种应用于mysql配置的设置?

谢谢

2 个答案:

答案 0 :(得分:3)

您可以使用UUID。

INSERT INTO mytable(id, name) VALUES(SELECT UUID(), 'some data');

详细了解UUID:http://mysqlbackupnet.codeplex.com/wikipage?title=Using%20MySQL%20With%20GUID%20or%20UUID

答案 1 :(得分:0)

您可以创建可在全球范围内使用的SEQUENCE。

  CREATE SEQUENCE serial
  INCREMENT 1
  MINVALUE 0
  MAXVALUE 200
  START 364
  CACHE 1;

编辑:Postgres支持序列,但这可以通过设置AUTO_INCREMENT的值在MySql中实现,并且可以使用LAST_INSERT_ID()。 link