2017-12-01 13 views
1

で開始されるPostgresの制約が必要です。INSERT queriesonly(UPDATEクエリではありません)。Postgres:INSERTのみをチェックする制約

現在、それはこのように実装されています

ALTER TABLE test ADD CONSTRAINT check_something_const 
CHECK (check_something(id, task_id)) NOT VALID; 

check_something

CREATE OR REPLACE FUNCTION check_something(UUID, UUID) 
RETURNS BOOLEAN AS $$ 
DECLARE 
existed_id UUID; 
BEGIN 
SELECT id 
INTO existed_id 
FROM test WHERE ...etc. 
RETURN existed_id IS NULL 
END; 
$$ LANGUAGE 'plpgsql' VOLATILE; 

、現在check_something_constを更新し、挿入クエリの両方にトリガされます。 新しい行が挿入されても更新されない場合は、のみをチェックする必要があります。

+1

挿入トリガーが必要です。 –

+3

挿入トリガーの前後に使用できます。 https://www.postgresql.org/docs/9.1/static/sql-createtrigger.html – swd

答えて

0

これは、挿入時にのみ発生するトリガ手順で実現できます。