mysql触发器

mysql触发器
mysql触发器

触发器(trigger)

作用:

可以监视增删改操作

并触发增删改操作

创建触发器

(delimiter $)

create trigger 触发器名称

a fter/before insert/update/delete on表名

for each row

begin

sql 语句—一个或者多个语句,范围在insert/update/delete内; end ($)

在此需要重新设置结束符号

delimiter $

创建第一个简单触发器:

效果

g 表羊自动减少 3只

发现问题:

设置结尾符号语句不可带分号否则设置不成功

解决方案

如何在触发器中引用行的值

对于insert 而言,新增的行用new来表示。行中的每一列的值,用 new.列名来表示。对于delete而言,删去的行用 old来表示。行中的每一列的值,用old.列名来表示。

对于update而言,更新前的行用 old来表示。old.列名表示更新前的引用。

更新后的行,用new.列名来表示更新后的引用。

触发器的删除

drop trigger 触发器名称

触发器的显示

清空表单

truncate 表名

购买下单实例

1、创建满足条件的新的触发器

2、执行 insert(下第一笔订单购买 4 号商品,数量为2)

3、查看o订单

4、g商品表中的对应id号得商品减少

完整购买案例1、增加一个订单,库存相应减少

2、删除一个订单,库存相应增加

3、修改下单时,商品表数量相应发生变化

触发器里 after 和 before的区别

after 是先完成数据的操作,再出发时间,不能对前面的增

删改作出影响。

如果用的是 before,可以对数据进行审查。是先于触发再完成增删改,可以审查、判断、即将发生的增删改操作。

before应用

创建触发器时即可对插入数据进行影响

create trigger buy

before insert on o

for each row

begin

if new.much >5 then

set new.much=5;

end if;

update g set num = num -new.much where id = new.gid;

end$

mysql触发器异常处理

MySQL触发器异常处理 MySQL触发器更新本表数据异常:Can't update table 'tbl' in stored function/trigger because it is already used by statement which invoked this 如果你在触发器里面对刚刚插入的数据进行了 insert/update, 则出现这个问题。因为会造 成循环的调用. create trigger test before update on test for each row update test set NEW.updateTime = NOW() where id=NEW.ID; END 应该使用set操作,而不是在触发器里使用 update,比如 create trigger test before update on test for each row set NEW.updateTime = NOW(); END MySQL触发器执行复合语句 触发器1.自增表中商品分类编码值+1,添加商品分类前给商品分类编码属性赋其对应的自 增表中的值 CREATE TRIGGER trigger1 BEFORE INSERT ON dw_base_commodity_category_info FOR EACH ROW BEGIN UPDATE sequence SET current_value=current_value+1 WHERE `name`='dw_base_commodity_category_info'; SET NEW.code=(SELECT current_value FROM sequence WHERE `name`='dw_base_commodity_category_info'); END; 删除触发器1:DROP TRIGGER trigger1; 触发器2.自增表中商品编码值+1,添加商品前给商品编码属性赋其对应的自增表中的值 CREATE TRIGGER trigger2 BEFORE INSERT ON dw_commodity_fact_info

mysql设置触发器权限问题的解决方法

本文实例讲述了mysql设置触发器权限的方法,针对权限错误的情况非常实用。具体分析如下: mysql导入数据提示没有super privilege权限处理,如下所示: 1 error 1419 (hy000): you do not have the super privilege and binary logging is enabled 导入function 、trigger 到mysql database,报错: 1 you do not have the super privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)”. 原因: function / trigger 中有dangerous statements修改数据库,错误只在启用binary logging选项进行主从复制的服务器上出现。 解决方法如下: 1)导入数据的用户不仅需要create routine, alter routine, create trigger, alter trigger, create function 和alter function 权限,还需要super privileges 权限,使用超级用户导入数据。 2)让所有用户具有执行类似functions的权限,危险,不推荐, 123 o by specifying it on the server start, like: –log-bin-trust-function-creators=1 o by setting it to 1 through the set global statement, like: mysql> set global log_bin_trust_function_creators = 1; 3)如果不需要复制,或者是从库,关闭binlog, 1234 # binary logging –not required for slaves, but recommended #log-bin=mysql-bin # binary logging format –mixed recommended #binlog_format=mixed 希望本文所述对大家的mysql数据库设计有所帮助。 更多信息请查看IT技术专栏

MySQL触发器

MySQL 5.0 触发器 MySQL 5.0 新特性系列 C 第 2 部分 MySQL 技术白皮书 Peter Gulutzan March, 2005 翻译:陈朋奕 毕业于西安电子科技大学 现泛华讯电脑技术 版权说明版权说明::本手册参考之原文本手册参考之原文的版权属的版权属 MySQL AB,而本手册可自由使用而本手册可自由使用、、修改修改、、散发散发、、转载和商业用途转载和商业用途,, 但必须保留译者署名但必须保留译者署名。。由此引发的版权问题由此引发的版权问题,,译者不负责任译者不负责任。。(btw :可能会有错别字或错误可能会有错别字或错误,,但不影响阅读但不影响阅读)) Cop yright 2005, MySQL AB

Table of Contents Introduction (3) Conventions and Styles (3) Why Triggers (3) 1. Syntax: Name (4) 2. Syntax: Time (5) 3. Syntax: Event (5) 4. Syntax: Table (5) 5. Syntax: Granularity (5) 6. Syntax: Statement (6) Privileges (6) Referring to OLD and NEW columns (6) Example of CREATE and INSERT (7) Example of a "check" constraint (7) Conclusion (9) About MySQL (9) Copyri ght 2005, MySQL AB Page 2

mysql 触发器使用实例

mysql 触发器使用实例(修改一个表内容的同时另一个表内容自动变化) [分享]触发器小例子 触发器能进行一些约束. 这是个小例子,当Student表的StudentID列被发生更改时,BorrowStudent表的StudentID列也跟着更改.如果Student表删除某记录,BorrowStudent也删除对应StudentID的记录. /*先删除将要创建而存在的表*/ drop table if exists Student; drop table if exists BorrowStudent; /*创建表*/ create table Student( StudentID int not null primary key, StudentName varchar(30) not null, StudentSex enum('m','f') default 'm' )engine=myisam; create table BorrowStudent( BorrowRecord int not null auto_increment primary key, StudentID int not null, BorrorDate date, ReturnDate date, foreign key(StudentID) references Student(StudentID) )engine=myisam; /*插入记录*/ insert into Student values(1235412,'java','m'); insert into Student values(3214562,'jiajia','m'); insert into Student values(5441253,'purana','f'); insert into BorrowStudent(StudentID,BorrorDate,ReturnDate) values(1235412,'2007-01-01','2007-01-07'); insert into BorrowStudent(StudentID,BorrorDate,ReturnDate)

mysql触发器实例附答案

触发器和常用函数 第一部分:触发器 概念题 1触发器的含义和作用 实践题 在product表上创建三个触发器。每次激活触发器后,都会更新operate表。product表和operate表的内容如下 按照下列要求进行操作 1 在product表上分别创建BEFORE INSERT、AFTER UPDATE和AFTER DELETE 3个触发器,触发器名称分别为product_bf_insert、product_af_update和product_af_del。执行语句部分都是向operate表插入操作方法和操作时间。 2 对product表分别执行INSERT、UPDATE和DELETE操作 3 删除product_bf_insert和product_af_update这两个触发器 执行步骤 1.创建product表和operate表 2.创建product_bf_insert触发器 3.创建product_af_update触发器 4.创建product_af_del触发器 5.对product表进行操作 6.删除触发器

第二部分:MySQL常用函数 文本函数 数字函数

日期和时间函数

概念题 触发器是由INSERT、UPDATE和DELETE等事件来触发某种特定操作。 满足触发器的触发条件时,数据库系统就会执行触发器中定义的程序语句。这样做可以保证某些操作的一致性。 实践题 1 CREATE TABLE product( id INT(10) NOT NULL UNIQUE PRIMARY KEY, name V ARCHAR(20) NOT NULL, function V ARCHAR(50), company V ARCHAR(20) NOT NULL, address V ARCHAR(50) ); CREATE TABLE operate( op_id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT, op_name V ARCHAR(20) NOT NULL, op_time TIME NOT NULL, ); 2 CREATE TRIGGER product_bf_insert BEFORE INSERT ON poduct FOR EACH ROW INSERT INTO operate V ALUES(null,’Insert product’,now()); SELECT * FROM information_schema.triggers WHERE TRIGGER_NAME=’product_bf_insert ’ \G* (查看触发器product_bf_insert基本信息) 3 CREATE TRIGGER product_af_update AFTER UPDA TE ON product FOR EACH ROW INSERT INTO operate V ALUES(null,’Update product’,now()); 4 CREATE TRIGGER product_af_del AFTER DELETE ON product FOR EACH ROW INSERT INTO operate V ALUES(null,’delete product’,now()); 5 INSERT INTO product V ALUES(1,’abc’,’治疗感冒’,’北京abc制药厂’,’北京市昌平区’); SELECT * FROM operate; UPDATE product SET address=’北京市海淀区’ WHERE id=1; SELECT * FROM operate; DELETE FROM product WHERE id=1; SELECT * FROM operate; 6 DROP TRIGGER product_bf_insert; DROP TRIGGER product_af_update;

mysql触发器语法的使用

mysql触发器语法的使用 一、触发器简介触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete,update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。触发器可以从DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。通俗的来说触发器,从字面来理解,一触即发的一个器,简称触发器(哈哈,个人理解),举个例子吧,好比天黑了,你开灯了,你看到东西了。你放炮仗,点燃了,一会就炸了。 触发器有一个非常好的特性就是:触发器可以禁止或回滚违反引用完整性的更改,从而取消所尝试的数据修改。二、触发器语法代码如下 CREATE TRIGGER trigger_name trigger_TIme trigger_event ON tbl_name FOR EACH ROW trigger_stmt 触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。 触发程序与命名为tbl_name的表相关。tbl_name必须引用永久性表。不能将触发程序与TEMPORARY表或视图关联起来。 trigger_TIme是触发程序的动作时间。它可以是BEFORE或AFTER,以指明触发程序是在激活它的语句之前或之后触发。 trigger_event指明了激活触发程序的语句的类型。trigger_event可以是下述值之一:INSERT:将新行插入表时激活触发程序,例如,通过INSERT、LOAD DATA和REPLACE 语句。 UPDATE:更改某一行时激活触发程序,例如,通过UPDATE语句。 DELETE:从表中删除某一行时激活触发程序,例如,通过DELETE和REPLACE语句。请注意,trigger_event与以表操作方式激活触发程序的SQL语句并不很类似,这点很重要。例如,关于INSERT的BEFORE触发程序不仅能被INSERT语句激活,也能被LOAD DATA 语句激活。 可能会造成混淆的例子之一是INSERT INTO 。. ON DUPLICATE UPDATE 。..语法:

MySQL触发器在电子商城系统中的应用

龙源期刊网 https://www.360docs.net/doc/f29358890.html, MySQL触发器在电子商城系统中的应用 作者:张吉力 来源:《电脑知识与技术》2013年第30期 摘要:触发器是一种特殊的存储过程,主要通过事件触发从而执行。通过一个订单与库存管理的案例,详细阐述了insert、delete 、update触发器的特性及在电子商城系统中的应用。 关键词:触发器;insert;delete;update;电子商城系统 中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)30-6923-03 触发器是由insert、delete和update等事件来触发某种特定操作。满足触发器的触发条件时,数据库系统就会执行触发器中定义的程序语句。这样做可以保证某些操作之间的一致性。例如,当学生表中增加了一个学生的信息时,学生的总数就必须同时改变。可以在这里创建一个触发器,每次增加一个学生的记录,就执行一次计算学生总数的操作。这样就可以保证每次增加学生的记录后,学生总数是与记录数是一致的。触发器的主要应用场合如下: 1)当向一张表中添加、删除或修改记录时,在相关表中需要进行同步操作。比如,当某客户订购商品,可以在生成订单时通过设计触发器自动将订单所购的库存量相应减少。 2)当表中某字段数据与其他表中数据有关联时。比如,某客户利用信用卡进行消费,可以在其刷卡时通过设计触发器来判断本次消费金额累加后是否超过了卡的最大透支额度。 3)当对某张表需要进行实时跟踪时。比如,当某客户成功订购某商品后,此时可以在订单表上设计触发器来通知相关人员进行及时处理。 1 使用触发器 1.1 创建触发器基本语法 其中触发器名可由程序员自行指定;触发时间可以是before或after,以指明触发程序是在激活它的语句之前或之后触发;触发事件指明了激活触发程序语句的类型,它的值可以是insert、delete、update其中之一;建立触发器的表名用来标识是在哪张表上创建的触发器;FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发该触发器。执行语句是当触发程序激活时执行的语句。不难发现,触发器必须满足以下四要素,监视地点、监视事件、监视时间和触发事件。 1.2 触发器执行多行语句

MySql数据库触发器学年论文

数学与计算科学学院学年论文(课程设计) 题目触发器在MySQL数据库中的应用 姓名吴碧青 学号1309401050 专业年级2013级信息与计算科学 指导教师李玉梅副教授 2015年12 月10 日

学年论文(课程设计)成绩评定表

触发器在MySQL数据库中的应用 摘 要 触发器是SQL server提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表的事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发。我们这篇文章中提到的是三个基本触发器的相关应用,当我们对一个表进行操作插入、更新、删除时来然后去激活它执行。 在本文中阐述了三种常见的触发器:insert触发器、delete触发器、update 触发器,而这三种触发器是在MySQL数据库中的应用的比较广泛,实用性也很强。这三种触发器都可以查询其他表,也可以包含复杂SQL语句。它们主要用于强制服从复杂的业务规则或要求。我们可以利用这三个触发器来改变一些数据库表中的数据,比如:当教师的底薪升高了,而我们需要改变教师表和工资表中底薪我们就可以用触发器来实现同时把两个表中的信息修改到自己想要的值。 关键词 触发器、insert触发器、delete触发器、update触发器 Application of trigger in MySQL database Abstract The trigger is a way to ensure data integrity by server SQL, which is a special storage process associated with a table event. It is not a program call, nor a manual, but an event. The relevant application of the three basic triggers, when we use a table to insert, update, delete, and then activate it. In this paper, three kinds of common triggers are described in this paper: insert, delete, update, and these three kinds of flip flops are widely used in MySQL database. These three triggers can query other tables, also can contain complex SQL statements. They are mainly used to enforce compliance with complex business rules or requirements. We can change some database table data, using the three triggers such as: when the teacher's salary has increased, and we need to change the teachers' salary and wage table table we can use triggers to implement the two tables in the information you want to modify the value. Key words Trigger、insert Trigger、delete Trigger、update Trigger

Mysql触发器中执行一个外部程序

Mysql触发器中执行一个外部程序 昨天接到一个需求,要求在mysql的触发器中执行一个外部程序。 一开始没有什么头绪,后来发现嘿嘿。 https://www.360docs.net/doc/f29358890.html,/projects/project.php?id=211 有个叫mysqludf的一个东西,用起来还不错。 https://www.360docs.net/doc/f29358890.html,/lib_mysqludf_sys/index.php 不过这个东西仅仅在linux下试了试,效果还行。 步骤如下: 一、解压附件的压缩包之后 如果不想自己编译的话,把lib_mysqludf_sys.so文件放到mysql的 lib/mysql/plugin/ 目录下。 二、执行chcon -t texrel_shlib_t mysql/lib/mysql/plugin/lib_mysqludf_sys.so 三、创建函数 DROP FUNCTION IF EXISTS lib_mysqludf_sys_info; DROP FUNCTION IF EXISTS sys_get; DROP FUNCTION IF EXISTS sys_set; DROP FUNCTION IF EXISTS sys_exec; DROP FUNCTION IF EXISTS sys_eval; CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME 'lib_mysqludf_sys.so'; CREATE FUNCTION sys_get RETURNS string SONAME 'lib_mysqludf_sys.so'; CREATE FUNCTION sys_set RETURNS int SONAME 'lib_mysqludf_sys.so'; CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.so'; CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sys.so'; 四、测试

MYSQL触发器教程

约定和编程风格 每次我想要演示实际代码时,我会对mysql客户端的屏幕就出现的代码进行调整,将字体改成Courier,使他们看起来与普通文本不一样(让大家区别程序代码和正文)。在这里举个例子: mysql> DROP FUNCTION f; Query OK, 0 rows affected (0.00 sec) 如果实例比较大,则需要在某些行和段落间加注释,同时我会用将"<--"符号放在页面的右边以表示强调。例如: mysql> CREATE PROCEDURE p () -> BEGIN -> /* This procedure does nothing */ <-- -> END;// Query OK, 0 rows affected (0.00 sec) 有时候我会将例子中的"mysql>"和"->"这些系统显示去掉,你可以直接将代码复制到mysql 客户端程序中(如果你现在所读的不是电子版的,可以在https://www.360docs.net/doc/f29358890.html,网站下载相关脚本)所以的例子都已经在Suse 9.2 Linux、Mysql 5.0.3公共版上测试通过。在您阅读本书的时候,Mysql已经有更高的版本,同时能支持更多OS了,包括Windows,Sparc,HP-UX。因此这里的例子将能正常的运行在您的电脑上。但如果运行仍然出现故障,可以咨询你认识的资深Mysql用户,这样就能得到比较好的支持和帮助。 为什么要用触发器 我们在MySQL 5.0中包含对触发器的支持是由于以下原因: MySQL早期版本的用户长期有需要触发器的要求。 我们曾经许诺支持所有ANSI标准的特性。 您可以使用它来检查或预防坏的数据进入数据库。 您可以改变或者取消INSERT, UPDATE以及DELETE语句。 您可以在一个会话中监视数据改变的动作。

第12章MySQL触发器与事件

数据库系统原理及MySQL应用教程(第2版) 课后习题参考答案 第12章MySQL触发器与事件 1、触发器是一种特殊的存储过程,它在试图更改触发器所保护的数据时自 动执行。它被定义为在对表或视图发出 UPDATE、INSERT 或 DELETE 语句时自动 执行,在有数据修改时自动强制执行其业务规则。 2、创建触发器: create trigger trigger_name trigger_time trigger_event on tbl_name for each row trigger_stmt 查看触发器:show triggers 删除触发器:drop trigger [schema_name.]trigger_name触发程序 3、限制: (1)触发器不能调用将数据返回客户端的存储过程,也不能使用采用call 语句的动态sql。 (2)触发器不能使用以显式或隐式方式开始或结束事务的语句,如start transaction、commit或rollback。 4、事件调度器(event scheduler):可以用做定时执行某些特定任务,可以 精确到每秒钟执行一个任务,而操作系统的计划任务只能精确到每分钟执行一次。 5、事件调度器是在 MySQL 5.1 中新增的另一个特色功能,可以作为定时任 务调度器,取代部分原先只能用操作系统任务调度器才能完成的定时功能。 6、创建事件: create event event_name on schedule schedule [on completion [not] preserve] [enable | disable | disable on slave]

Mysql实验2

南京邮电大学计算机学院 《大型数据库技术》 实验三:MySQL数据库进阶开发 姓名:王觉龙班级:B130404 学号:B13040412 2016年 4月 15日星期五 说明:斜体需要输出的部分。 1MySQL的存储过程和函数 1.1创建企业销售系统的数据库,命名为salesdb create database salesdb charset=utf8; 1.2创建一张商品销售表,命名为salerecords,包括如下字段:商品ID,商品名称,销 售单价,销售数量。 create table salerecords(id intauto_increment primary key,name varchar(20) default 'book',priceint,numberint); 1.3创建一个存储过程,名称自订,通过输入商品ID,商品名称,销售单价,销售数量往 表中插入一条记录。 delimiter $$ create procedure film_1_3(IN p_idint,INp_name varchar(20),IN p_priceint,INp_numberint) READS SQL DATA BEGIN insert into salerecords values(p_id,p_name,p_price,p_number); END $$ DELIMITER ; call film_1_3(1,'book1',150,5000); call film_1_3(2,'book2',250,1000); call film_1_3(3,'book3',350,4000); select * from salerecords; 输出截图:(包括存储过程定义,调用三次存储过程,以及表的查询结果)

MySQL触发器的作用及使用详解

MySQL触发器的作用及使用详解 MySQL在5的版本添加了触发器的功能。虽然现在功能还不是非常强大,但是还是可以帮忙咱们解决不少问题。 现在,咱们就从使用场景以及使用方式来介绍一下MySQL的触发器,并且在最后咱们完成一个使用触发器的小实例。 1、什么是触发器 触发器是与表事件相关的,由程序(这里我们主要是指的MySQL数据库)在监控到相应的操作(例如:添加一条数据)时激活执行。 在MySQL中,咱们可以去监听用户的DML语句,然后可以在执行前或者执行后再去完成我们自己的功能。 2、触发器能做什么 1)在添加一条数据前,检查数据是否合理,例如检查邮件格式是否正确 2)删除数据后,将这条数据进行一个备份(类似于回收站) 3)商品买出(订单修改时审核),把库存表中的数量进行变化 4)记录数据库操作日志(操作前后) 注:大家应该可以发现,上面的例子都是在表进行变化时让程序自己去完成一些功能。 这里的表进行变化:主要指的就是咱们执行insert,update,delete语句时。 3、怎么创建触发器 触发器的语法: CREATE TRIGGER 名称 {BEFORE|AFTER} {INSERT|DELETE|UPDATE} ON 表名 FOR EACH ROW 执行相应的sql 语法分析: CREATE TRIGGER 名称 创建触发器,并且为它取一个名称 {BEFORE|AFTER} {INSERT|DELETE|UPDATE} ON 表名 在哪张表添加/删除/修改的之前/之后执行 FOR EACH ROW 执行相应的sql 每一行都会执行相应的操作 注意事项: 触发器的名称是唯一的,千万不要重复。MySQL5中是要求每个表唯一,而不是针对整个数据库,但是还是建议在整个数据库范围中保证名称唯一。 每个表的每个事件每次都只能创建一次。比如说我们一个t_employee表中已经创建了一个insert之前的事件,就不能再加一次。

【IT专家】mysql触发器(Trigger)简明总结和使用实例

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 mysql触发器(Trigger)简明总结和使用实例2014/11/18 29132 这篇文章主要介绍了mysql触发器(Trigger)简明总结和使用实例,需要的朋友可以参考下一,什么触发器1,个人理解触发器,从字面来理解,一触即发的一个器,简称触发器(哈哈,个人理解),举个例子吧,好比天黑了,你开灯了,你看到东西了。你放炮仗,点燃了,一会就炸了。2,官方定义触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete,update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。触发器可以从DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。触发器有一个非常好的特性就是:触发器可以禁止或回滚违反引用完整性的更改,从而取消所尝试的数据修改。什么意思,举个例子解释一下,街机游戏大家都玩过吧,闯过一关,闯下一关,有一关没闯过就要从第一关开始。触发器根这个类似。官方解释如下触发程序视为单一交易中的一部份,因此可以由原触发程序还原交易,如果在交易过程中侦测到严重的错误(如使用者中断连线),则会自动还原整个交易。他的作用很明显了,可以保重数据的完整性,下面有一个实例来说明他的好处,以及如果使编写代码不那么复杂二,触发器语法CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。触发程序与命名为tbl_name 的表相关。tbl_name必须引用永久性表。不能将触发程序与TEMPORARY表或视 图关联起来。trigger_time是触发程序的动作时间。它可以是BEFORE或AFTER,以指明触发程序是在激活它的语句之前或之后触发。trigger_event指明了激活触发程序的语句的类型。trigger_event可以是下述值之一:· INSERT:将新行插入表时激活触发程序,例如,通过INSERT、LOAD DATA和REPLACE语句。· UPDATE:更改某一行时激活触发程序,例如,通过UPDATE语句。· DELETE:从表中删除某一行时激活触发程序,例如,通过DELETE和REPLACE语句。请注意,trigger_event与以表操作方式激活触发程序的SQL语句并不很类似,这点很

10款最好用的mysql——ui管理工具

10个可视化开发的MySQL管理工具 使用各种精心设计的工具来管理MySQL数据库要比单纯使用传统的方法轻松得的多。开发人员应该不断寻找那些能够缩短开发时间的工具。这也是我们本文整理这10个能够简化开发过程的MySQL工具的原因。 一、MySQL Workbench MySQL Workbench是一个由MySQL开发的跨平台、可视化数据库工具。它作为DBDesigner4工程的替代应用程序而备受瞩目。MySQL Workbench可以作为windows、linux和OS X系统上的原始GUI工具,它有各种不同的版本,你可以查看下面的链接以获得它的版本信息。 二、phpMyAdmin phpMyAdmin是一款免费的、用PHP编写的工具,用于在万维网上管理MySQL,它支持MySQL的大部分功能。这款含有用户界面的软件能够支持一些最常用的操作(比如管理数据库、表格、字段、联系、索引、用户、许可,等等),同时你还可以直接执行任何SQL 语句。 它所具备的特性: >直观的Web界面 >支持大多数MySQL功能: > 浏览和丢弃数据库、表格、视图、字段和索引 >创建、复制、删除、重命名以及更改数据库、表格、字段和索引 >维护服务器、数据库以及表格,能对服务器的配置提出建议 >执行、编辑和标注任何SQL语句,甚至批量查询 >管理MySQL用户以及用户权限 >管理存储的过程(stored procedures)和触发器(triggers) >从CSV 和SQL文件格式中导入数据 >能够以多种格式导出数据:CSV、SQL、XML、PDF、ISO/IEC 26300等 >管理多台服务器 >为数据库布局创建PDF图表 >使用Query-by-example (QBE)创建复杂的查询 >在数据库中进行全局搜索,或者在数据库的子集中进行搜索 >用预定义的函数把存储的数据转化成任何格式

实验四MYSQL存储过程与触发器

实验四MYSQL存储过程与触发器 实验平台:安装MYSQL数据库的PC 实验目的:1.理解存储过程在数据库中的作用,能够针对MYSQL编写所需的存储过程。 2.理解触发器在数据库中的作用,能够针对MYSQL编写所需的触发器。 实验内容:1.掌握MYSQL中存储过程编写的方法并完成指导书上要求的相关实验。 2.掌握MYSQL中触发器编写的方法并完成级联更新、删除、及CHECK功能。实验具体要求(在导入的教学管理STM数据库中完成): 1、基本储存过程的创建 ①创建一存储过程get_student_num,利用输出参数形式获取学生人数信息。并利用CALL调用该存储过程查看结果。 ②创建一存储过程get_student_by_sno,通过输入学生编号作为参数,获得该学生的记录信息。并利用CALL调用该存储过程查看结果。

③创建一存储过程update_sage_by_sno,通过输入学生编号、年龄作为参数,将指定学生的年龄更改为指定的年龄。并利用CALL调用该存储过程查看结果。 ④创建一存储过程delete_student_by_sno,通过输入学生编号作为参数,删除该学生记录。并利用CALL调用该存储过程查看结果。 ⑤创建一存储过程insert_student,通过输入相关信息作为参数,向学生表中添加一学生记录。并利用CALL调用该存储过程查看结果。

2、基本函数过程的创建 ①创建一存储函数get_student_num,利用输出参数形式获取学生人数信息。并利用select 调用该存储函数查看结果。 ②创建一存储函数get_student_by_sno,通过输入学生编号作为参数,获得该学生的记录信息。并利用select调用该存储函数查看结果。

MYSQL 触发器使用实例

mysql触发器使用实例(修改一个表内容的同时另一个表内容自动变化) [分享]触发器小例子 触发器能进行一些约束. 这是个小例子,当Student表的StudentID列被发生更改时,BorrowStudent表的StudentID列也跟着更改.如果Student表删除某记录,BorrowStudent也删除对应StudentID的记录. /*先删除将要创建而存在的表*/ drop table if exists Student; drop table if exists BorrowStudent; /*创建表*/ create table Student( StudentID int not null primary key, StudentName varchar(30)not null, StudentSex enum('m','f')default'm' )engine=myisam; create table BorrowStudent( BorrowRecord int not null auto_increment primary key, StudentID int not null, BorrorDate date, ReturnDate date, foreign key(StudentID)references Student(StudentID) )engine=myisam; /*插入记录*/ insert into Student values(1235412,'java','m'); insert into Student values(3214562,'jiajia','m'); insert into Student values(5441253,'purana','f'); insert into BorrowStudent(StudentID,BorrorDate,ReturnDate) values(1235412,'2007-01-01','2007-01-07'); insert into BorrowStudent(StudentID,BorrorDate,ReturnDate)

数据库:看一句SQL语句在MySQL中如何被执行

在分析之前我会先带着你看看MySQL 的基础架构,知道了MySQL 由那些组件组成以及这些组件的作用是什么,可以帮助我们理解和解决这些问题。 一MySQL 基础架构分析 1.1 MySQL 基本架构概览 下图是MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的SQL 语句在MySQL 内部是如何执行的。 先简单介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图,在1.2 节中会详细介绍到这些组件的作用。 ?连接器:身份认证和权限相关(登录MySQL 的时候)。 ?查询缓存:执行查询语句的时候,会先查询缓存(MySQL 8.0 版本后移除,因为这个功能不太实用)。 ?分析器:没有命中缓存的话,SQL 语句就会经过分析器,分析器说白了就是要先看你的SQL 语句要干嘛,再检查你的SQL 语句语法是否正确。 ?优化器:按照MySQL 认为最优的方案去执行。 ?执行器:执行语句,然后从存储引擎返回数据。

简单来说MySQL 主要分为Server 层和存储引擎层:

?Server 层:主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块binglog 日志模块。 ?存储引擎:主要负责数据的存储和读取,采用可以替换的插件式架构,支持InnoDB、MyISAM、Memory 等多个存储引擎,其中InnoDB 引擎有自有的日志模块redolog 模块。现在最常用的存储引擎是InnoDB,它从MySQL 5.5.5 版本开始就被当做默认存储引擎了。 1.2 Server 层基本组件介绍 1) 连接器 连接器主要和身份认证和权限相关的功能相关,就好比一个级别很高的门卫一样。 主要负责用户登录数据库,进行用户的身份认证,包括校验账户密码,权限等操作,如果用户账户密码已通过,连接器会到权限表中查询该用户的所有权限,之后在这个连接里的权限逻辑判断都是会依赖此时读取到的权限数据,也就是说,后续只要这个连接不断开,即时管理员修改了该用户的权限,该用户也是不受影响的。 2) 查询缓存(MySQL 8.0 版本后移除) 查询缓存主要用来缓存我们所执行的SELECT 语句以及该语句的结果集。

MySQL(job,trigger,tablespace)

MySQL JOB、TRIGGER、TABLESPACE 使用 一、JOB创建计划任务 1.语法 CREATE EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE] [COMMENT 'comment'] DO sql_statement; schedule: AT TIMESTAMP [+ INTERVAL INTERVAL] | EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP] INTERVAL: quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND} 2.案例 创建JOB 1.先建立一个表 Create table job_use(id int,create_time datetime); 2.建立一个过程,向一个表里面插入数据 Create procedure JOB_TEST() BEGIN declare ii int; select max(id) into ii from job_use ; insert into job_use VALUES (ii+1,SYSDATE()); END 3.建立一个JOB,每隔60秒执行一次 create event if not EXISTS e_select on SCHEDULE every 60 SECOND DO CALL JOB_TEST(); 4.打开关闭JOB alter event e_select ON COMPLETION PRESERVE DISABLE;

相关文档
最新文档