sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLでCOPYを実行するとシーケンスが更新されないのはなぜですか?

    あなたは尋ねます:

    はい、ここに記載されています

    あなたが書く:

    しかし、そうではありません! :)通常のINSERTを実行するときは、通常、SEQUENCEで裏付けられた主キーに明示的な値を指定しません。そうした場合、現在発生しているのと同じ問題が発生します。

    postgres=> create table uh_oh (id serial not null primary key, data char(1));
    NOTICE:  CREATE TABLE will create implicit sequence "uh_oh_id_seq" for serial column "uh_oh.id"
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "uh_oh_pkey" for table "uh_oh"
    CREATE TABLE
    postgres=> insert into uh_oh (id, data) values (1, 'x');
    INSERT 0 1
    postgres=> insert into uh_oh (data) values ('a');
    ERROR:  duplicate key value violates unique constraint "uh_oh_pkey"
    DETAIL:  Key (id)=(1) already exists.
    

    もちろん、COPYコマンドは明示的なidを提供しています。 上記のINSERTの例のように、値。



    1. postgreSQLのデータベースをutf8に変換する方法は?

    2. Command.Parameters[@name].Value正しい構文

    3. perfを使用したPostgreSQLのトレース

    4. Ubuntuのbashスクリプトから純粋にmysql5.7をインストールします