2

我在数据库中有几个表,假设它们被称为 table1、table 2 等。所有表都有一个自动递增的主键列“id”。

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

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

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

谢谢

4

2 回答 2

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

于 2013-05-02T12:19:21.890 回答
0

您可以创建可全局使用的 SEQUENCE。

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

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

于 2013-05-02T11:40:52.883 回答