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

主キーを複合主キーに変更する

    冗長な一意 制約 id PRIMARY KEYをドロップする前に 制約。これは、FK制約の要件を満たしています。 ドキュメントごと:

    大胆な強調鉱山。

    明らかに、FK制約は、 pg_depend 。したがって、参照しているすべてのFK制約を削除して後で再作成するか、システムテーブルを混乱させる必要があります(これはお勧めできません!)。 1回のトランザクションで最高 参照整合性を維持するには:

    BEGIN;
    ALTER TABLE bar DROP CONSTRAINT bar_id_foo_fkey;
    
    ALTER TABLE foo 
        DROP CONSTRAINT foo_pkey
      , ADD CONSTRAINT foo_uni_id UNIQUE (id)
      , ADD PRIMARY KEY (id, id2);
    
    ALTER TABLE bar ADD CONSTRAINT bar_id_foo_fkey
      FOREIGN KEY (id) REFERENCES foo (id);
    
    COMMIT;
    

    SQLフィドル。 (特に名前を提供するカタログエントリを表示するクエリを使用します。)

    ALTER TABLEのマニュアルの詳細

    これは中間状態としてのみ意味があります。 idの場合 UNIQUE NOT NULLのままです 、PKの場合もあります。



    1. mysqli_stmt ::bind_param()-各パラメーターにs以外の別のデータ型を指定します

    2. この地理距離SQLクエリをPostgresと互換性を持たせるにはどうすればよいですか?

    3. JSON_LENGTH()–MySQLでJSONドキュメントの長さを返します

    4. OracleUnicodeスプーリング