0

我想在 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”是一个列而不是一个值。

4

0 回答 0