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
を更新し、挿入クエリの両方にトリガされます。 新しい行が挿入されても更新されない場合は、のみをチェックする必要があります。
挿入トリガーが必要です。 –
挿入トリガーの前後に使用できます。 https://www.postgresql.org/docs/9.1/static/sql-createtrigger.html – swd