电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL存儲函數以及觸發器詳解

瀏覽:7日期:2023-08-14 20:18:43
目錄MySQLSQL存儲函數1). 介紹2). 案例 觸發器介紹 語法1). 創建2). 查看3). 刪除案例A. 插入數據觸發器測試:B. 修改數據觸發器測試:C. 刪除數據觸發器測試:MySQL

MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,屬于 Oracle 旗下產品。MySQL 是最流行的關系型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件之一。MySQL是一種關系型數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。MySQL所使用的 SQL 語言是用于訪問數據庫的最常用標準化語言。MySQL 軟件采用了雙授權政策,分為社區版和商業版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型和大型網站的開發都選擇 MySQL 作為網站數據庫。

SQL

結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統。結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同數據庫系統, 可以使用相同的結構化查詢語言作為數據輸入與管理的接口。結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。

存儲函數1). 介紹

存儲函數是有返回值的存儲過程,存儲函數的參數只能是 IN 類型的。具體語法如下:

CREATE FUNCTION 存儲函數名稱 ([ 參數列表 ])RETURNS type [characteristic ...]BEGIN-- SQL語句RETURN ...;END ;

characteristic 說明

DETERMINISTIC :相同的輸入參數總是產生相同的結果

NO SQL :不包含 SQL 語句。

READS SQL DATA :包含讀取數據的語句,但不包含寫入數據的語句。

2). 案例

計算從 1 累加到 n 的值, n 為傳入的參數值。

create function fun1(n int)returns int deterministicbegindeclare total int default 0;while n>0 doset total := total + n;set n := n - 1;end while;return total;end;select fun1(50);

在 mysql8.0 版本中 binlog 默認是開啟的,一旦開啟了, mysql 就要求在定義存儲過程時,需要指定characteristic 特性,否則就會報如下錯誤:

觸發器介紹

觸發器是與表有關的數據庫對象,指在 insert/update/delete 之前 (BEFORE) 或之后 (AFTER) ,觸發并執行觸發器中定義的 SQL 語句集合。觸發器的這種特性可以協助應用在數據庫端確保數據的完整性, 日志記錄 , 數據校驗等操作 。

使用別名 OLD 和 NEW 來引用觸發器中發生變化的記錄內容,這與其他的數據庫是相似的。現在觸發器還只支持行級觸發,不支持語句級觸發。

語法1). 創建CREATE TRIGGER trigger_nameBEFORE/AFTER INSERT/UPDATE/DELETEON tbl_name FOR EACH ROW -- 行級觸發器BEGINtrigger_stmt ;END; 2). 查看SHOW TRIGGERS ;3). 刪除DROP TRIGGER [schema_name.]trigger_name ; -- 如果沒有指定 schema_name,默認為當前數據庫 。案例

通過觸發器記錄 tb_user 表的數據變更日志,將變更日志插入到日志表 user_logs 中 , 包含增加 ,

修改 , 刪除 ;

表結構準備 :

-- 準備工作 : 日志表 user_logscreate table user_logs(id int(11) not null auto_increment,operation varchar(20) not null comment '操作類型, insert/update/delete',operate_time datetime not null comment '操作時間',operate_id int(11) not null comment '操作的ID',operate_params varchar(500) comment '操作參數',primary key(`id`))engine=innodb default charset=utf8;A. 插入數據觸發器create trigger tb_user_insert_triggerafter insert on tb_user for each rowbegininsert into user_logs(id, operation, operate_time, operate_id, operate_params)VALUES(null, 'insert', now(), new.id, concat('插入的數據內容為:id=',new.id,',name=',new.name, ', phone=', NEW.phone, ', email=', NEW.email, ',profession=', NEW.profession));end;測試:-- 查看show triggers ;-- 插入數據到tb_userinsert into tb_user(id, name, phone, email, profession, age, gender, status,createtime) VALUES (26,'三皇子','18809091212','erhuangzi@163.com','軟件工程',23,'1','1',now());

測試完畢之后,檢查日志表中的數據是否可以正常插入,以及插入數據的正確性。

B. 修改數據觸發器create trigger tb_user_update_triggerafter update on tb_user for each rowbegininsert into user_logs(id, operation, operate_time, operate_id, operate_params)VALUES(null, 'update', now(), new.id,concat('更新之前的數據: id=',old.id,',name=',old.name, ', phone=',old.phone, ', email=', old.email, ', profession=', old.profession,' | 更新之后的數據: id=',new.id,',name=',new.name, ', phone=',NEW.phone, ', email=', NEW.email, ', profession=', NEW.profession));end;測試:-- 查看show triggers ;-- 更新update tb_user set profession = '會計' where id = 23;update tb_user set profession = '會計' where id <= 5;

測試完畢之后,檢查日志表中的數據是否可以正常插入,以及插入數據的正確性。

C. 刪除數據觸發器create trigger tb_user_delete_triggerafter delete on tb_user for each rowbegininsert into user_logs(id, operation, operate_time, operate_id, operate_params)VALUES(null, 'delete', now(), old.id,concat('刪除之前的數據: id=',old.id,',name=',old.name, ', phone=',old.phone, ', email=', old.email, ', profession=', old.profession));end;測試:-- 查看show triggers ;-- 刪除數據delete from tb_user where id = 26;

測試完畢之后,檢查日志表中的數據是否可以正常插入,以及插入數據的正確性。

到此這篇關于MySQL存儲函數以及觸發器詳解的文章就介紹到這了,更多相關MySQL存儲函數及觸發器內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 气力输送设备_料封泵_仓泵_散装机_气化板_压力释放阀-河南锐驰机械设备有限公司 | 进口试验机价格-进口生物材料试验机-西安卡夫曼测控技术有限公司 | 贴板式电磁阀-不锈钢-气动上展式放料阀-上海弗雷西阀门有限公司 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 软膜天花_软膜灯箱_首选乐创品牌_一站式天花软膜材料供应商! | 带锯机|木工带锯机圆木推台锯|跑车带锯机|河北茂业机械制造有限公司| | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | RFID电子标签厂家-上海尼太普电子有限公司 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 干洗店加盟_洗衣店加盟_干洗店设备-伊蔻干洗「武汉总部」 | 天津蒸汽/热水锅炉-电锅炉安装维修直销厂家-天津鑫淼暖通设备有限公司 | 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 合肥白癜风医院_[治疗白癜风]哪家好_合肥北大白癜风医院 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 升降机-高空作业车租赁-蜘蛛车-曲臂式伸缩臂剪叉式液压升降平台-脚手架-【普雷斯特公司厂家】 | 工业淬火油烟净化器,北京油烟净化器厂家,热处理油烟净化器-北京众鑫百科 | 江苏皓越真空设备有限公司| 合肥通道闸-安徽车牌识别-人脸识别系统厂家-安徽熵控智能技术有限公司 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | 酒店品牌设计-酒店vi设计-酒店标识设计【国际级】VI策划公司 | 合肥钣金加工-安徽激光切割加工-机箱机柜加工厂家-合肥通快 | 亮点云建站-网站建设制作平台 | 移动厕所租赁|移动卫生间|上海移动厕所租赁-家瑞租赁 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 污水提升器,污水提升泵,地下室排水,增压泵,雨水泵,智能供排水控制器-上海智流泵业有限公司 | CCC验厂-家用电器|服务器CCC认证咨询-奥测世纪 | 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | 螺旋叶片_螺旋叶片成型机_绞龙叶片_莱州源泽机械制造有限公司 | 滤芯,过滤器,滤油机,贺德克滤芯,精密滤芯_新乡市宇清流体净化技术有限公司 | 雨水收集系统厂家-雨水收集利用-模块雨水收集池-徐州博智环保科技有限公司 | 高温高压釜(氢化反应釜)百科 | 一氧化氮泄露报警器,二甲苯浓度超标报警器-郑州汇瑞埔电子技术有限公司 | 合肥废气治理设备_安徽除尘设备_工业废气处理设备厂家-盈凯环保 合肥防火门窗/隔断_合肥防火卷帘门厂家_安徽耐火窗_良万消防设备有限公司 | 在线浊度仪_悬浮物污泥浓度计_超声波泥位计_污泥界面仪_泥水界面仪-无锡蓝拓仪表科技有限公司 | 驾驶式洗地机/扫地机_全自动洗地机_工业洗地机_荣事达工厂官网 | 柴油发电机组_柴油发电机_发电机组价格-江苏凯晨电力设备有限公司 | 深圳公司注册-工商注册公司-千百顺代理记账公司| 坏男孩影院-提供最新电影_动漫_综艺_电视剧_迅雷免费电影最新观看 |