26

ビューがあり、1つの属性を主キーにしたい。

CREATE VIEW filedata_view
AS SELECT num PRIMARY KEY, id, ST_TRANSFORM(the_geom,900913) AS the_geom
FROM filedata

しかし、エラーが発生します

ERROR:  syntax error at or near "PRIMARY"
LINE 2: AS SELECT num PRIMARY KEY, id, ST_TRANSFORM(the_geom,900913)...

これを行う方法?

4

2 に答える 2

30

Postgresqlのビューは主キーを持つことができません。

基本的に、ビューに制約を作成する方法が間違っています。制約はテーブルに作成する必要がありますが、一部のDBMSは、次の構文を使用してoracleなどのビューに制約を追加することをサポートしています。

ALTER VIEW VIEW_NAME ADD PRIMARY KEY PK_VIEW_NAME DISABLE NOVALIDATE;

Oracle Doc For Constraints

ビューに指定できるのは、一意、主キー、および外部キーの制約のみであり、これらはDISABLENOVALIDATEモードでのみサポートされます。

したがって、互換性のためにのみサポートされています。filedataテーブルの列numへの重複データの挿入を停止する主キーが必要場合は、 filedataテーブルを変更して主キーを追加するか、テーブルを作成してください。最初から列numに主キーがあります。

于 2012-07-26T10:47:58.830 に答える
11

Postgresqlはビューの制約をサポートしていません。他のDBMS(Oracleなど)はこれをサポートしていますが、Postgresqlはサポートしていません。

于 2012-07-26T10:50:28.327 に答える