当前位置: 首页 > wzjs >正文

常见动态网站开发技术对比无锡百度公司王东

常见动态网站开发技术对比,无锡百度公司王东,做网站哪家靠谱,日本做头像的网站概述 以下介绍MySQL触发器和函数的详细示例及说明触发器是数据库的自动化规则,监听数据变化并自动干活。函数是封装好的计算逻辑,随用随调,帮你省去重复写代码的麻烦。 一、MySQL 触发器示例 触发器(Trigger)是数据…

概述

  • 以下介绍MySQL触发器和函数的详细示例及说明
  • 触发器是数据库的自动化规则,监听数据变化并自动干活。
  • 函数是封装好的计算逻辑,随用随调,帮你省去重复写代码的麻烦。

一、MySQL 触发器示例

  • 触发器(Trigger)是数据库在特定事件(INSERT/UPDATE/DELETE)发生时自动执行的一段代码。

1. 基本语法

CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name
FOR EACH ROW
BEGIN-- 触发器逻辑
END;

2. 示例场景

场景1:自动填充创建时间

-- 在插入数据前自动设置 create_time 字段
CREATE TRIGGER before_insert_set_create_time
BEFORE INSERT ON orders
FOR EACH ROW
BEGINSET NEW.create_time = NOW();
END;

场景2:更新审计日志

-- 在更新用户表后记录变更日志
CREATE TRIGGER after_user_update
AFTER UPDATE ON users
FOR EACH ROW
BEGININSERT INTO audit_log (action, old_value, new_value, timestamp)VALUES ('UPDATE_USER',CONCAT('Old: ', OLD.email),CONCAT('New: ', NEW.email),NOW());
END;

场景3:数据校验

-- 插入数据前检查年龄是否合法
CREATE TRIGGER before_insert_check_age
BEFORE INSERT ON employees
FOR EACH ROW
BEGINIF NEW.age < 0 THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '年龄不能为负数';END IF;
END;

二、MySQL 函数示例

  • 函数(Function)是一段可重复使用的代码,接收参数并返回一个值。

1. 基本语法

CREATE FUNCTION function_name(param1 type, ...)
RETURNS return_type
[DETERMINISTIC | NOT DETERMINISTIC]
BEGIN-- 函数逻辑RETURN value;
END;

2. 示例场景

示例1:计算折扣后的价格

-- 输入原价和折扣率,返回折扣后的价格
CREATE FUNCTION calculate_discounted_price(original_price DECIMAL(10,2), discount_rate DECIMAL(3,2))
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGINDECLARE discounted_price DECIMAL(10,2);SET discounted_price = original_price * (1 - discount_rate);RETURN discounted_price;
END;
-- 使用函数
SELECT calculate_discounted_price(100.00, 0.2); -- 返回 80.00

示例2:格式化电话号码

-- 将电话号码格式化为 xxx-xxxx-xxxx
CREATE FUNCTION format_phone_number(phone VARCHAR(20))
RETURNS VARCHAR(20)
DETERMINISTIC
BEGINRETURN CONCAT(SUBSTR(phone, 1, 3), '-',SUBSTR(phone, 4, 4), '-',SUBSTR(phone, 8, 4));
END;
-- 使用函数
SELECT format_phone_number('13812345678'); -- 返回 '138-1234-5678'

示例3:计算订单总价(含折扣)

-- 根据订单ID计算总价(考虑折扣)
CREATE FUNCTION calculate_order_total(order_id INT)
RETURNS DECIMAL(10,2)
READS SQL DATA
BEGINDECLARE total DECIMAL(10,2);SELECT SUM(quantity * price * (1 - discount))INTO totalFROM order_itemsWHERE order_id = order_id;RETURN total;
END;
-- 使用函数
SELECT calculate_order_total(1001);

三、注意事项

  1. 触发器
    • 避免在触发器中执行耗时操作,可能影响性能。
    • 使用 OLDNEW 关键字访问旧数据和新数据。
    • 确保触发器逻辑不会导致无限循环(例如在 AFTER UPDATE 触发器中更新同一张表)。

  2. 函数
    • 函数必须返回一个值。
    • 使用 DETERMINISTIC 声明确定性函数(相同输入固定输出),优化查询性能。
    • 函数中可以使用条件语句(IF)、循环(WHILE)等逻辑。

四、总结

触发器适合处理数据一致性、审计日志、自动填充字段等场景。
函数适合封装复杂计算或格式化逻辑,提高代码复用性。

通过合理使用触发器和函数,可以简化应用程序逻辑并提高数据库的健壮性。

http://www.dtcms.com/wzjs/17107.html

相关文章:

  • 百度可以建网站吗网站案例
  • 源码做网站教程南昌网优化seo公司
  • 辽宁网站定制企业seo研究中心晴天
  • 商城网站建百度搜索网站
  • 大学生网站策划书说明书百度关键词工具入口
  • 现在有没有免费的网站空间关键词百度云
  • 做网站关键词加到什么位置网站关键词搜索
  • 忻州政府网站建设百度搜索推广多少钱
  • 做网站 长营销推广策划方案
  • 只做百度移动端网站可以吗百度云登陆首页
  • 著名的国外设计网站有哪些百度怎么投广告
  • 重庆品牌网站建设公司怎么样推广自己的网站
  • 个人网页设计作品模板学生企业seo案例
  • 乐清微网站建设百度一下百度搜索网站
  • 外包加工网是否靠谱阜新网站seo
  • 非微信官方网页自己做的网站推广网站的四种方法
  • 宁波专业做网站公司网页宣传
  • 新余做网站的公司山东服务好的seo
  • 外贸建站模版搜索引擎优化公司
  • 如何用照片做模板下载网站知乎软文推广
  • 郑州企业做网站网络服务包括
  • 一个asp网站的mdb数据库修改搜索引擎优化实训
  • 网站建设售后服务合同一键免费创建论坛网站
  • 互联网推广计划排名优化seo公司
  • 网络信息公司名字优化大师的使用方法
  • 网络建设与维护公司网站seo外包价格
  • 建站宝盒v8破解版下载推广策略
  • 广州招聘网网站开发百度关键词查询工具免费
  • 团队网站模板深圳网络推广公司有哪些
  • 网站建设与运营 好考吗网站排名英文