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

新しく割り当てられたシーケンスが機能していません

    あなたの問題は、 serial を使用するのではなく、これらすべてを手動で設定することだと思います。 桁。 シリアルを使用する場合 列の場合、PostgreSQLはシーケンスを作成し、適切なデフォルト値を設定し、シーケンスが問題のテーブルと列によって所有されていることを確認します。 詳細なマニュアル> :

    ただし、 serialは使用していません またはbigserial したがって、 pg_get_serial_sequence 役に立たない。

    これを修正するには、次のようにします。

    alter sequence new_user_messages_id owned by user_messages.id
    

    これが完全な解決策であるかどうかはわかりません。誰か(こんにちはアーウィン)がおそらく不足している部分を埋めるでしょう。

    シリアル idのデータ型として 桁。これにより、シーケンスが作成され、接続されます。

    例:

    => create sequence seq_test_id;
    => create table seq_test (id integer not null default nextval('seq_test_id'::regclass));
    => select pg_catalog.pg_get_serial_sequence('seq_test','id');
     pg_get_serial_sequence 
    ------------------------
    
    (1 row)
    => alter sequence seq_test_id owned by seq_test.id;
    => select pg_catalog.pg_get_serial_sequence('seq_test','id');
     pg_get_serial_sequence 
    ------------------------
     public.seq_test_id
    (1 row)
    



    1. SQL Server 2016:関係を作成する

    2. 条件付きのMySql検索ランキング

    3. MySQL挿入:最初にテストしますか?

    4. データベースPostgreSQLからHibernateマッピングファイルとPOJOを生成できませんか?