0

次のようなもので初期化された2つのテーブルがあります。

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列がfooシリアルではなく varchar(254) である理由は、通常の操作では、独自の ID 値を生成する代わりに、Google OAuth2 によって提供される ID を挿入しているためです。

tempこれで、first_name列で呼び出す 3 番目のテーブルに一連のレコードができました。この投稿をエミュレートしようとしていますが、文字列の主キーに対して行う方法がわかりません。

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 ドキュメントにあるように、insert ステートメントに続く引数を の宣言に一致するテーブルの形式にする必要があることはわかっていますmy_user。ここで必要なIDの列を生成する方法、または1つの数字が繰り返される列を生成する方法がわからないだけだと思います。

読んでくれてありがとう

4

1 に答える 1

0

ID に UUID (GUID のようなもの) を挿入できます...一意であることが保証されています。

悲しいことに、モジュールをロードするのは少し複雑です: Generating a UUID in Postgres for Insert statement?

ああ...そしてwildplaserが言ったこと、+1!:-)

于 2013-08-09T17:31:54.017 に答える