存储过程
存储过程是一组预先编译好的SQL语句,可以被多次调用,大大减少了代码量和提高了效率。MySQL中,存储过程是用CREATE PROCEDURE语句创建的。
CREATE PROCEDURE test(IN num INT) BEGIN SELECT * FROM table WHERE id = num; END;
在这个例子中,大家创建了一个名为test的存储过程,接受一个参数num。在存储过程内部,大家使用SELECT语句查询表中id等于num的记录。
存储过程的优点:
- 提高数据库运行效率
- 减少了网络传输
- 减少了代码量
存储过程的缺点:
- 难以调试
- 难以维护
- 代码复杂度高
触发器
触发器是MySQL中的一种数据库对象,它是一组可以在数据表发生增、删、改操作时自动执行的SQL语句。
触发器有三个内置条件:BEFORE,AFTER和INSTEAD OF。可以在触发器中对数据进行修改、插入和更新。
CREATE TRIGGER trigger_name BEFORE INSERT ON table_name FOR EACH ROW BEGIN SET NEW.column_name = function(NEW.column_name); END;
在这个例子中,大家创建了一个名为trigger_name的触发器,在每次插入表中数据之前进行操作。大家使用了一个自定义函数function,将列column_name中的值修改为函数的返回值。
触发器的优点:
- 自动执行SQL语句
- 可以限制数据的插入、修改或删除
- 可以保证数据的一致性
触发器的缺点:
- 可能会增加数据库的负担
- 难以维护
- 不能在一个SQL事务中使用