2017-09-18 22 views
0

私はPostgreSQLデータベースに 'link'という名前のテーブルを作成しました。私は「リンク」PostgreSQLの重複プライマリテーブル

CREATE TABLE link (
id select PRIMARY KEY, 
url VARCHAR(255) NOT NULL, 
name VARCHAR(255) NOT NULL); 

CREATE TABLE link_copy (LIKE link); 

私は 'からすべての行をコピーした後に「ID」= 2を有し「link_copy」「へのリンク」から行をコピーしたと同様の構成を持つ別のテーブル「link_copy」を作成しましたlink 'を' link_copy 'に設定します。私は 'link_copy'で 'id' = 2の行を2回見て驚いた。 'id'カラムをプライマリキー(デフォルトではUNIQUE NOT NULL)にすると、なぜ 'id' = 2行が 'link_copy'に2回挿入されるのですか?

私はpgadmin IIIでMacでpostgresql 9.5を使用しています。

screenshot for final link_copy status

+0

'CREATE TABLE link( id select PRIMARY KEY、...);これでエラーは発生しませんか? –

+0

テーブル作成コードをそのままお持ちください。 –

+0

@OtoShavadzeコードを更新しました。すべてのコードはSQLエディタで正常に実行されました。最後のスクリーンショットも追加しました。 –

答えて

0

あなたが別のと同じ構造を持つ新しいテーブルを作成するために、CREATE TABLEコマンドを使用すると、列を複製し、すべてではないの制約。 link_copyテーブルは、このように作成された後に定義された主キーを持ちません。

+0

ありがとう!私はpostgresqlのドキュメントを同じようにチェックしています: "インデックス、プライマリキー、ユニーク、および除外の制約は、元のテーブルの新しいテーブルにINCLUDING INDEXESが指定されている場合にのみ作成されます。 –

関連する問題