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

PostgreSQL、既存のテーブルを再構成し、主キーをtype=serialに変更します

    CREATE SEQUENCE kalksad1_kalk_id_seq;
    
    ALTER TABLE kalksad1
            ALTER COLUMN kalk_id SET DEFAULT nextval('kalksad1_kalk_id_seq' )
            ;
    
    ALTER SEQUENCE kalksad1_kalk_id_seq OWNED BY kalksad1.kalk_id;
    
    WITH mx AS (SELECT max(kalk_id) AS mx FROM kalksad1)
    SELECT setval( 'kalksad1_kalk_id_seq' , mx.mx)
    FROM mx
            ;
    
       -- Test it ...
    INSERT INTO kalksad1(brkalk, brred, description) VALUES (42, 666, 'Tralala' );
    SELECT * FROM kalksad1;
    

    結果:

    NOTICE:  table "kalksad1" does not exist, skipping
    DROP TABLE
    CREATE TABLE
    INSERT 0 12
    CREATE SEQUENCE
    ALTER TABLE
    ALTER SEQUENCE
     setval 
    --------
         47
    (1 row)
    
    INSERT 0 1
     kalk_id | brkalk | brred |        description        
    ---------+--------+-------+---------------------------
          12 |      2 |     5 | text index 12 doc 2 row 5
          26 |      2 |     1 | text index 26 doc 2 row 1
          30 |      2 |     2 | text index 30 doc 2 row 2
          32 |      4 |     1 | text index 32 doc 4 row 1
          36 |      1 |     1 | text index 36 doc 1 row 1
          37 |      1 |     2 | text index 37 doc 1 row 2
          38 |      5 |     1 | text index 38 doc 5 row 1
          39 |      5 |     2 | text index 39 doc 5 row 2
          42 |      2 |     3 | text index 42 doc 2 row 3
          43 |      2 |     4 | text index 43 doc 2 row 4
          46 |      3 |     1 | text index 46 doc 3 row 1
          47 |      3 |     2 | text index 47 doc 3 row 2
          48 |     42 |   666 | Tralala
    (13 rows)
    



    1. OracleのLOCALTIMESTAMP()関数

    2. MySQL:トランザクションとテーブルのロック

    3. PLSQLを使用してOracleテーブルからExcelにデータをエクスポートする

    4. Fedora20でのMySQLリレーショナルデータベースの使用