我需要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
在更新和插入查询时都会被触发。
我需要的是在插入新行但未更新时检查仅。
答案 0 :(得分:0)
这可以通过仅在插入时触发的触发程序来实现。