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

PostgreSQLで既存のテーブルに自動インクリメントの主キーを追加するにはどうすればよいですか?

    更新-コメントしてくれた人々に感謝します

    PostgreSQLの最新バージョン

    test1という名前のテーブルがあるとします。 、自動インクリメントの主キーidを追加する (代理)列。最近のバージョンのPostgreSQLでは、次のコマンドで十分です。

       ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY;
    

    古いバージョンのPostgreSQL

    古いバージョンのPostgreSQL(8.xより前?)では、すべての汚い作業を行う必要がありました。次の一連のコマンドでうまくいくはずです:

      ALTER TABLE test1 ADD COLUMN id INTEGER;
      CREATE SEQUENCE test_id_seq OWNED BY test1.id;
      ALTER TABLE test ALTER COLUMN id SET DEFAULT nextval('test_id_seq');
      UPDATE test1 SET id = nextval('test_id_seq');
    

    繰り返しになりますが、Postgresの最近のバージョンでは、これは上記の単一のコマンドとほぼ同等です。



    1. PostgreSQLでユーザーをスーパーユーザーに変更する方法

    2. SQLServerデータベース内のすべてのトリガーをテーブル名とテーブルのスキーマとともに一覧表示する必要があります

    3. OracleのTO_YMINTERVAL()関数

    4. Oracle:DDLとトランザクションのロールバック