Postgre 或 mysql id 列自动递增
Postgre or mysql id column auto increment
我对 postgre 或 mysql 中的主键有疑问。
所以:
在 mongodb 中,id 不是整数,它们是一些唯一值,例如“507f191e810c19729de860ea”。当您想要同步来自多个 ID 的记录时,这会有所帮助。他们永远不会匹配(或者机会很小)。所以我可以从一个数据库中获取一条记录并将其插入到我的数据库中,而不会在 id 主键约束中发生冲突。
所以我的问题是 Postgre SQL 或 MySQL 数据库中有类似的功能。
我知道我可以使用 php/nodejs/python 生成 id,但我更喜欢使用数据库本身自动且简单的东西。
我可以在数据库中创建我的 procedure/function,但我避免这样做 - 我希望数据库自动处理这个(就像 mongodb 那样)。
这种方法有什么缺点吗?
您可以按如下方式使用SERIAL:
CREATE TABLE table_name(
id SERIAL
);
这就像 SQL 中的自动递增。
在 PostgreSQL 中,您可以生成 UUID。
首先,您需要确保安装了扩展程序:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
然后使用uuid_generate_v4
函数生成一个UUID
。如果你不想每次都记住插入,你可以定义为主键的默认值:
CREATE TABLE mytable (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
-- other columns as needed...
);
我对 postgre 或 mysql 中的主键有疑问。
所以:
在 mongodb 中,id 不是整数,它们是一些唯一值,例如“507f191e810c19729de860ea”。当您想要同步来自多个 ID 的记录时,这会有所帮助。他们永远不会匹配(或者机会很小)。所以我可以从一个数据库中获取一条记录并将其插入到我的数据库中,而不会在 id 主键约束中发生冲突。
所以我的问题是 Postgre SQL 或 MySQL 数据库中有类似的功能。
我知道我可以使用 php/nodejs/python 生成 id,但我更喜欢使用数据库本身自动且简单的东西。
我可以在数据库中创建我的 procedure/function,但我避免这样做 - 我希望数据库自动处理这个(就像 mongodb 那样)。
这种方法有什么缺点吗?
您可以按如下方式使用SERIAL:
CREATE TABLE table_name(
id SERIAL
);
这就像 SQL 中的自动递增。
在 PostgreSQL 中,您可以生成 UUID。
首先,您需要确保安装了扩展程序:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
然后使用uuid_generate_v4
函数生成一个UUID
。如果你不想每次都记住插入,你可以定义为主键的默认值:
CREATE TABLE mytable (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
-- other columns as needed...
);