1

スキーマの例: http://sqlfiddle.com/#!1/3d410

既にテーブルを取得しており、有効ではない新しい外部キーをテーブルに追加したいと考えています。NOT VALID 外部キーを追加するための正しい構文は何ですか?

CREATE TABLE junks (
  id serial PRIMARY KEY,
  name text
);

CREATE TABLE trunks (
  id serial PRIMARY KEY,
  name text
  -- no fk
);

-- and the below does not work!

--ALTER TABLE trunks ADD junk serial REFERENCES junks(id) NOT VALID;
4

2 に答える 2

4

最初に列を追加します。

alter table trunks add column junk serial;

次に、テーブルに制約を追加します。

alter table trunks add constraint the_constraint_name
    FOREIGN KEY (junk)
    REFERENCES junks (id)
    not valid;
于 2012-12-20T13:06:28.487 に答える
1

これは機能します:

ALTER TABLE trunks ADD CONSTRAINT FK_junk_id 
  FOREIGN KEY (id) 
  REFERENCES junks(id) 
  NOT VALID
;

たとえば、http ://www.postgresql.org/docs/devel/static/ddl-alter.html#AEN2758 を参照してください。

于 2012-12-20T13:12:07.743 に答える