在CentOS系统中,触发器通常与数据库(如MySQL、PostgreSQL等)或系统服务(如cron)相关联。以下是针对这两种情况的触发器自定义方法:
创建触发器:
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE ON table_name
FOR EACH ROW
BEGIN
-- 触发器的逻辑代码
END;
示例:
假设我们有一个名为orders的表,我们想在每次插入新订单时自动更新库存表inventory。
CREATE TRIGGER update_inventory_after_insert
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
UPDATE inventory
SET quantity = quantity - NEW.quantity
WHERE product_id = NEW.product_id;
END;
查看触发器:
SHOW TRIGGERS;
删除触发器:
DROP TRIGGER IF EXISTS trigger_name;
创建触发器:
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE ON table_name
FOR EACH ROW
EXECUTE FUNCTION function_name();
示例:
同样以orders表为例,更新库存表inventory。
CREATE OR REPLACE FUNCTION update_inventory()
RETURNS TRIGGER AS $$
BEGIN
UPDATE inventory
SET quantity = quantity - NEW.quantity
WHERE product_id = NEW.product_id;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER update_inventory_after_insert
AFTER INSERT ON orders
FOR EACH ROW
EXECUTE FUNCTION update_inventory();
查看触发器:
SELECT * FROM pg_trigger;
删除触发器:
DROP TRIGGER IF EXISTS trigger_name ON table_name;
编辑crontab文件:
crontab -e
添加定时任务:
例如,每天凌晨2点执行备份脚本/home/user/backup.sh。
0 2 * * * /home/user/backup.sh
保存并退出:
按Esc键,然后输入:wq保存并退出。
通过以上步骤,你可以在CentOS系统中自定义数据库触发器和系统服务触发器。