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

PostgreSqlのシリアルシーケンスをEntityFramework(C#)でオーバーライドする

    自動生成された値を使用して挿入する前に、データベースのシーケンスをリセットする必要があります。テーブルのDDLに大きく依存します。最もよく使用されるIDの自動生成には2つの例があります:

    /*
    -- Be careful with these 3 lines if you already have such objects in the your DB 
    drop table if exists t1;
    drop table if exists t2;
    drop sequence if exists seq_t2_id;
    */
    
    -- Using serial type for ID
    create table t1 (t1_id serial, t1_name char varying);
    insert into t1 (t1_id, t1_name) values (22, 'aaa');
    select setval(pg_get_serial_sequence('t1', 't1_id'), (select max(t1_id) from t1)); -- Reset serial value
    insert into t1 (t1_name) values ('bbb');
    select * from t1;
    
    -- Using sequence to generate IDs
    create sequence seq_t2_id;
    create table t2(t2_id bigint default nextval('seq_t2_id'), t2_name char varying);
    insert into t2(t2_id, t2_name) values (22, 'aaa');
    select setval('seq_t2_id', (select max(t2_id) from t2)); -- Update sequence
    insert into t2 (t2_name) values ('bbb');
    select * from t2;
    



    1. 別のテーブルのサブセットを指定することを唯一の目的とするテーブル

    2. SQLite全文検索入門

    3. サブリレーションを持つリレーションのLaravelEloquentLimit

    4. HashMapをJSONタイプとしてPostgreSQLに挿入する方法は?