Postgres:只检查INSERT的约束

时间:2017-12-01 07:31:37

标签: postgresql plpgsql

我需要Postgres中的约束,它只能在 INSERT 查询上触发(而不是在UPDATE查询中)。

目前以这种方式实施:

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 个答案:

答案 0 :(得分:0)

这可以通过仅在插入时触发的触发程序来实现。

相关问题