我想在 sql 中创建一个触发器函数,如果列值不等于“default_id”,它将阻止更新表中的列。例如,如果我更新some_id
等于“default_id”的行,它将成功。但是,如果我更新一个some_id
值不等于“default_id”的行列,它将引发异常。
CREATE FUNCTION not_allow_update_column_some_id() RETURNS trigger
LANGUAGE plpgsql AS
$$BEGIN
IF NEW.some_id <> OLD.some_id AND OLD.some_id <> "default_id" THEN
RAISE EXCEPTION 'some_id is not allowed to be updated unless it was equal to default value';
END IF;
RETURN NEW;
END;$$;
CREATE TRIGGER not_allow_update_column_some_id
BEFORE UPDATE ON some_table FOR EACH ROW
EXECUTE PROCEDURE not_allow_update_column_some_id();
上面的代码似乎不起作用,因为比较似乎认为“default_id”是一个列而不是一个值。