触发器现在将允许在 PostgreSql 中的特定日期对 table 进行任何操作
Trigger that will now allow any operation on a table on particular days in PostgreSql
如何创建一个触发器,不允许在特定日期的 table 'Customer' 上执行任何操作(插入 || 更新 || 删除),例如在周末和 7 月 4 日?
我知道触发器对某些事件(更新、插入等)执行存储过程,并且该函数检查星期几是否是周末,如果不让它发生,它应该取消该事件。我的问题是最后一部分,我如何 cancel/execute 基于条件的事件(插入等)?
只要对 trigger functions and some date functions 有最低限度的了解,您就可以得出这样的结论:
CREATE FUNCTION check_sunday() RETURNS trigger AS $$
BEGIN
IF EXTRACT(DOW FROM NOW()) = 0 THEN
RAISE EXCEPTION 'You cannot do this on Sunday!';
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER foo_trigger ON foo
BEFORE INSERT EXECUTE PROCEDURE check_sunday();
如何创建一个触发器,不允许在特定日期的 table 'Customer' 上执行任何操作(插入 || 更新 || 删除),例如在周末和 7 月 4 日?
我知道触发器对某些事件(更新、插入等)执行存储过程,并且该函数检查星期几是否是周末,如果不让它发生,它应该取消该事件。我的问题是最后一部分,我如何 cancel/execute 基于条件的事件(插入等)?
只要对 trigger functions and some date functions 有最低限度的了解,您就可以得出这样的结论:
CREATE FUNCTION check_sunday() RETURNS trigger AS $$
BEGIN
IF EXTRACT(DOW FROM NOW()) = 0 THEN
RAISE EXCEPTION 'You cannot do this on Sunday!';
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER foo_trigger ON foo
BEFORE INSERT EXECUTE PROCEDURE check_sunday();