0

我有两个表是这样初始化的:

create table foo ( 
     "id" varchar(254) not null primary key, 
     "first_name" varchar(254) not null);

create table my_user (
     "id" serial not null primary key, 
     "role" varchar(254) not null,
     "first_name" varchar(254) not null);

id列是 varchar(254) 而不是序列的原因foo是因为在正常操作中,我插入的是 Google OAuth2 提供的 id,而不是生成我自己的 id 值。

我现在在第三个表中有一组记录,我temp用该first_name列调用。我正在尝试模仿这篇文章,但我不确定如何对字符串主键执行此操作。

select * from (insert into my_user(id, role) 
    ('some id value I want to generate, like historical || incrementing number',
    [a fixed number],
    select first_name from temp) returning id);

正如Postgres 官方文档中所说,我知道我需要将插入语句后面的参数转换为与my_user. 我想我只是迷失了如何在这里生成一列我想要的 id,甚至是一列重复的数字。

谢谢阅读

4

1 回答 1

0

你可以在你的 ID 中插入一个 UUID(它就像一个 GUID)......它保证是唯一的。

遗憾的是,加载模块有点复杂:Generating a UUID in Postgres for Insert statement?

啊...和wildplasser所说的,+1!:-)

于 2013-08-09T17:31:54.017 回答