2011-12-06 7 views
1

すべて、Postgresqlビューにユニーク制約を追加する

PostgreSQLビューにユニーク制約を追加する方法はありますか?

CREATE OR REPLACE VIEW export AS 
(SELECT nextval('export_view'::regclass)::integer AS pid, getdata.id, getdata.service, getdata.title, getdata.date_taken, getdata.date_inserted, getdata.url, 
    regexp_replace(getdata.description, E'[\\n\\r]+', ' ', 'g') AS description, getdata.geom 
    FROM getdata) 

私はregualrテーブルのように働いてこの事を得るために、すべての組み合わせを試してみましたが、必要に応じてそれはまだ動作していません。

おかげで、 アダム

+0

技術的には、pidとidはどちらもユニークですが、私はpidが常に普遍的にユニークであると思います。 http://pastebin.com/1sznU09i <=デスクトップアプリケーションにビューを読み込もうとしていますが、試してみるものが好きではありません。 – aeupinhere

答えて

1

ビューで選択したデータの整合性をチェックする機能を記述することができます。次に、ビュー内で使用される任意のテーブルにアフター・トリガーを追加して、関数を呼び出します。自己作成の完全性制約チェッカー関数が違反を検出すると、トリガーはトランザクションを中止するための例外を発生させる可能性があります。

このトリガ構成を持つとビューの制約をシミュレートする必要がありますが、かなり脆弱です。残念ながら、ビューに制約を加えるためのネイティブ機能はないようです。

0

ませんビューは、テーブルの上にラッパーです。テーブルに制約を付ける必要があります。

+0

あなたのペーストビンからは、あなたのビュー出力に含まれるユニークなIDが必要です。ソフトウェアがそれを受け入れるかどうかを確認するためにrownumを追加した場合はどうでしょうか?楽しみのためだけに1を選択してビューを作成し、 'XYZ' UNION select 2、 'ABC';あなたのアプリはそれを好きですか? – Kuberchaun

関連する問題