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

既存のテーブルにシーケンスを作成する

    新しい列を追加するときにデフォルト値を設定します:

    create sequence rid_seq;
    alter table test add column rid integer default nextval('rid_seq');
    

    データベースにはどの値を変更する必要があるかを知る方法がないため、既存の列のデフォルト値を変更しても、既存のデータは変更されません。列の値に「この列にはデフォルト値があります」フラグはありません。デフォルト値(他に何も指定しなかったため、元々はNULL)と現在の値(これもNULL)がありますが、「NULL」の違いを区別する方法があります。デフォルトであるため」および「明示的にNULLに設定されているためNULL」。したがって、2つのステップでそれを行う場合:

    1. 列を追加します。
    2. デフォルト値を変更します。

    PostgreSQLは、追加した列にデフォルト値を適用しません。ただし、列を追加すると同時にデフォルト値を指定すると、PostgreSQLはどの行がデフォルト値(すべて)であるかを認識しているため、列が追加されたときに値を指定できます。

    ちなみに、おそらくその列にもNOT NULLが必要です:

    create sequence rid_seq;
    alter table test add column rid integer not null default nextval('rid_seq');
    

    そして、a_horse_with_no_name として rid_seqのみを使用する場合は注意してください test.rid用 列の場合は、所有者列を設定 することをお勧めします。 test.ridへ 列が削除された場合にシーケンスが削除されるように:

    alter sequence rid_seq owned by test.rid;
    


    1. PandasデータフレームをMySQLに書き込む

    2. $ mysqli変数を各関数に渡す必要がありますか?

    3. java.sql.SQLException:ORA-06550:Javaコードからプロシージャを呼び出した後

    4. 左結合がすべての行を返さない