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

Postgresの既存の列に「シリアル」を追加する

    次のコマンド(特にコメント付きのブロック)を見てください。

    DROP TABLE foo;
    DROP TABLE bar;
    
    CREATE TABLE foo (a int, b text);
    CREATE TABLE bar (a serial, b text);
    
    INSERT INTO foo (a, b) SELECT i, 'foo ' || i::text FROM generate_series(1, 5) i;
    INSERT INTO bar (b) SELECT 'bar ' || i::text FROM generate_series(1, 5) i;
    
    -- blocks of commands to turn foo into bar
    CREATE SEQUENCE foo_a_seq;
    ALTER TABLE foo ALTER COLUMN a SET DEFAULT nextval('foo_a_seq');
    ALTER TABLE foo ALTER COLUMN a SET NOT NULL;
    ALTER SEQUENCE foo_a_seq OWNED BY foo.a;    -- 8.2 or later
    
    SELECT MAX(a) FROM foo;
    SELECT setval('foo_a_seq', 5);  -- replace 5 by SELECT MAX result
    
    INSERT INTO foo (b) VALUES('teste');
    INSERT INTO bar (b) VALUES('teste');
    
    SELECT * FROM foo;
    SELECT * FROM bar;
    


    1. MySQLパフォーマンスチューニングに関する10の役立つヒント

    2. InnoDBを使用した全文検索

    3. SQLクエリの結果が期待どおりに戻らないのはなぜですか?

    4. オフラインのSQLiteデータベースをオンラインのMySQLデータベースと同期する