在新项目的数据库中,我已经开始约定让每个表都有一个最后修改的时间戳列。为了实现这一点,我为每个表编写了一个触发器:
CREATE TRIGGER touch_users
BEFORE UPDATE
ON users
FOR EACH ROW
WHEN (OLD.modification_time IS NOT DISTINCT FROM NEW.modification_time)
EXECUTE PROCEDURE touch_modification_time();
CREATE TRIGGER touch_company
BEFORE UPDATE
ON company
FOR EACH ROW
WHEN (OLD.modification_time IS NOT DISTINCT FROM NEW.modification_time)
EXECUTE PROCEDURE touch_modification_time();
-- etc for each table
Run Code Online (Sandbox Code Playgroud)
这很快就会变得乏味;特别是因为它们完全相同,除了表名。
有没有办法可以减少每个表所需的样板文件?或者甚至可能通过一个默认作用于每个表的触发器完全消除它?