如果我从您的评论中正确理解,您需要某种默认表,您将在触发器中使用这些默认表,并且管理员可以更改其中的值。
defaults
表架构可能看起来像
CREATE TABLE defaults
(`id` int not null auto_increment primary key,
`fees` decimal(12, 2) not null default 0,
`academic_year` int not null default 0,
`created` datetime not null
)
这个想法是存储所有默认值以及它们生效时的时间戳。为了更改默认值,只需插入具有新默认值的新行。
INSERT INTO Defaults (`fees`, `academic_year`, `created`)
VALUES (25.00, 2011, NOW())
现在触发
DELIMITER $$
CREATE TRIGGER tg_bi_table1
BEFORE INSERT ON Table1
FOR EACH ROW
BEGIN
DECLARE _fees DECIMAL(12, 2);
DECLARE _year INT;
SELECT fees, academic_year
INTO _fees, _year
FROM defaults
ORDER BY id DESC
LIMIT 1;
SET NEW.fees = _fees,
NEW.academic_year = _year;
END$$
DELIMITER ;
这是SQLFiddle演示