[pgsql-jp: 26045] Re: 複数のフィールドに対して主キーを設定する
M_Kakitani
kakip @ mars.dti.ne.jp
2002年 5月 20日 (月) 16:26:50 JST
垣谷@大田区です。
On Mon, 20 May 2002 13:56:27 +0900
tani <tani @ sn23.com> wrote:
> はじめまして谷と申します。
>
> すでにあるテーブルの2つのフィールドに主キーを設定したいのです
> が、
>
> =>ALTER TABLE foo ADD CONSTRAINT pkey PRIMARY KEY( a, b ) ;
>
> ERROR: ALTER TABLE / ADD CONSTRAINT is
> not implemented for that constraint type.
>
> とエラーが出てしまいます。
ALTER TABLE 〜 ADD CONSTRAINT 〜 PRIMARY KEY(〜);
自体はまだ実装されてません。エラーの内容そのままです。
ただし、
ALTER TABLE 〜 ADD CONSTRAINT 〜 FOREIGN KEY(〜);
は可能です。(他にもできるできないがあると思いますが試してません。)
--- 実行例 ---
test=# CREATE TABLE tb_a
test-# ( a1 integer, PRIMARY KEY(a1) );
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'tb_a_pkey' for table 'tb_a'
CREATE
test=#
test=# CREATE TABLE tb_b
test-# ( b1 integer );
CREATE
test=# ALTER TABLE tb_b ADD CONSTRAINT tb_const_pkey PRIMARY KEY (b1);
ERROR: ALTER TABLE / ADD CONSTRAINT is not implemented for that constraint type.
test=# ALTER TABLE tb_b ADD CONSTRAINT tb_const_fkey FOREIGN KEY (b1) REFERENCES tb_a (a1) match full;
NOTICE: ALTER TABLE ... ADD CONSTRAINT will create implicit trigger(s) for FOREIGN KEY check(s)
CREATE
--- 実行例ここまで ---
> また、Create Tableで設定しようとしても
> =>CREATE TABLE foo ( a TEXT PRIMARY KEY,
> b TEXT PRIMARY KEY ) ;
>
> CREATE TABLE/PRIMARY KEY multiple primary keys
> for table 'foo' are not allowed
>
> となります。
これは仲村さんがおっしゃるように
--- 実行例 ---
test=# CREATE TABLE tb_c
test-# (
test(# c1 integer,
test(# c2 integer,
test(# PRIMARY KEY(c1,c2)
test(# );
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'tb_c_pkey' for table 'tb_c'
CREATE
--- 実行例ここまで ---
こんな感じでできます。
--
Kakitani
kakip @ mars.dti.ne.jp
pgsql-jp メーリングリストの案内