我在数据库中有几个表,假设它们被称为table1,表2等。 所有表都有一个主键列'id',具有自动增量。
在我当前的配置中,当插入到table1时,生成的id为1。 之后,当插入table2时,生成的id也恰好为1。
如何在数据库中的所有表中强制使用绝对唯一的ID?我想在插入table1时,生成的id为1,如果之后插入table2,生成的id为2?
我在某台机器上使用了mysql服务器并且没有这个问题,但是当我在本地机器上安装mysql时,它开始出现了。所以我想它必须是某种应用于mysql配置的设置?
谢谢
答案 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