Mysql触发器实例教程(创建 删除 修改 查看)

1.创建触发器的语句:

CREATE TRIGGER <触发器名称> <--

{ BEFORE | AFTER }

{ INSERT | UPDATE | DELETE }

ON <表名称>

FOR EACH ROW

<触发器SQL语句>

-触发器

 代码如下 复制代码

--create trigger 名字
--on 表名
--触发动作
--for/after insert/update/delete
--as
--t-sql
select * from shop_jb
--insert into shop_xs values(6,4000,1,GETDATE(),3)
-- update shop_jb set stock=stock-1 where id=6

--创建触发器
create trigger tri1
on shop5_xs
after insert
as
update shop3_jb set stock=stock-1 where id=6

---触发器更新完之后,要查看表
create trigger tri3
on shop3_jb
for update
as
select * from shop3_jb

update shop3_jb set spec='sp-Z99' where id=2

drop trigger tri1

---用存储过程来实现,更新完之后,要查看表
alter proc proc1
as
update shop3_jb set spec='sp-111' where id=2
select * from shop3_jb

exec proc1

---查看表的触发器
exec sp_helptrigger 表名

---查看表的内容
exec sp_helptext 触发器名

---删除触发器
drop trigger 触发器名

提示:你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER),如果你已经是Root用户,那么就足够了。这跟SQL的标准有所不同。

实例:

example1:

创建表tab1:

 代码如下 复制代码

DROP TABLE IF EXISTS tab1;
CREATE TABLE tab1(
tab1_id varchar(11)
);

创建表tab2:

DROP TABLE IF EXISTS tab2;
CREATE TABLE tab2(
tab2_id varchar(11)
);

创建触发器:t_afterinsert_on_tab1

作用:增加tab1表记录后自动将记录增加到tab2表中

 代码如下 复制代码

DROP TRIGGER IF EXISTS t_afterinsert_on_tab1;
CREATE TRIGGER t_afterinsert_on_tab1
AFTER INSERT ON tab1
FOR EACH ROW
BEGIN
insert into tab2(tab2_id) values(new.tab1_id);
END;

测试一下:

 代码如下 复制代码
INSERT INTO tab1(tab1_id) values('0001');

看看结果估计两个表都有相同数据!

----------练习--------

 代码如下 复制代码

create trigger tri1
on shop3_jb
after insert
as
select * from inserted
insert into shop3_jb values('洗衣机','aa',200,500,getdate())

select * from shop3_jb

exec sp_helptrigger shop3_jb
exec sp_helptext tri1

drop trigger tri1

create trigger tri2
on shop3_jb
after delete
as
select * from deleted
delete from shop3_jb where namel='笔记本'

select * from shop3_jb

---查看表的触发器

exec sp_helptrigger 表名

---查看表的内容

exec sp_helptext 触发器名

---删除触发器

drop trigger 触发器名

select * from shop5_xs
select * from shop3_jb

补充语法

触发器 语法

3.1  CREATE TRIGGER trigger_name trigger_time trigger_event

  ON tbl_name FOR EACH ROW trigger_stmt
  trigger_time是触发程序的动作时间。它可以是BEFORE或AFTERtrigger_event指明了激活触发程序的语句的类型。trigger_event可以是下述值之一:

· INSERT:将新行插入表时激活触发程序,例如,通过INSERT、LOAD DATA和REPLACE语句。
· UPDATE:更改某一行时激活触发程序,例如,通过UPDATE语句。
· DELETE:从表中删除某一行时激活触发程序,例如,通过DELETE和REPLACE语句。
3.2 可能遇到的问题
如果你在触发器里面对刚刚插入的数据进行了 insert/update, 会造成循环的调用.

如:

 create trigger test before update on test for each row update test set NEW.updateTime = NOW() where id=NEW.ID; END

应该使用set:

create trigger test before update on test for each row set NEW.updateTime = NOW(); END

3.3 触发器 与存储过程

触发程序不能调用将数据返回客户端的存储程序,也不能使用采用CALL语句的动态SQL

 (允许存储程序通过参数将数据返回触发程序)。
而存储过程  可以接受参数,将结果范围给应用程序

时间: 2024-10-27 02:03:32

Mysql触发器实例教程(创建 删除 修改 查看)的相关文章

MySQL存储过程实例教程

MySQL存储过程实例教程 MySQL 5.0以后的版本开始支持存储过程,存储过程具有一致性.高效性.安全性和体系结构等特点,本节将通过具体的实例讲解PHP是如何操纵MySQL存储过程的. 实例261:存储过程的创建 这是一个创建存储过程的实例 录像位置:光盘mingrisoft9?lt;/p> 实例说明 为了保证数据的完整性.一致性,提高应用的性能,常采用存储过程技术.MySQL 5.0之前的版本并不支持存储过程,随着MySQL技术的日趋完善,存储过程将在以后的项目中得到广泛的应用.本实例将介

mysql replace 实例教程

mysql replace 实例教程 昨天因为导入 数据时一条数据出来了,后面就想到用update 与replace结合作操哦, update tablename set fields=replace('aa','bb',str) where Replace INTO和INSERT INTO的区别,我和他说晚上上我的blog看吧,那时候还在忙,现在 从MYSQL手册里找了点东西,MYSQL手册里说REPLACE INTO说的还是比较详细的. REPLACE的运行与INSERT很相像.只有一点除外

mysql触发器实例

  测试表1 ? 1 2 3 4 5 6 7 8 DROP TABLE IF EXISTS test;                  CREATE TABLE test (    id           bigint(11) unsigned NOT NULL AUTO_INCREMENT,    name         varchar(100) NOT NULL DEFAULT '',    type         varchar(100),   create_time  datet

ASP.NET实例教程:创建数据透视表

代码:Pivot.zip 数据透视表提供的数据三维视图效果,在Microsoft Excel能创建数据透视表,但是,它并不会总是很方便使用Excel.您可能希望在Web应用程序中创建一个数据透视报表.创建一个简单的数据透视表可能是一件非常复杂的任务.所以,我打算不但为你提供一个非常有用的工具创建简单和高级的数据透视表,而且为你移除一些笼罩他们的神秘面纱. 目标是:我们想要有能力将datatable中的二维的数据转换成三维视图. 在大多数情况下,你会从数据库的查询数据填充数据表,例如 SELECT

MySQL触发器运用于迁移和同步数据的实例教程_Mysql

1.迁移数据进行数据库移植,SQL Server=>MySQL.SQL Server上有如下的Trigger SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ALTER TRIGGER [trg_risks] ON dbo.projectrisk FOR INSERT, UPDATE AS BEGIN UPDATE projectrisk SET classification = case when calc>= 9 then 3 when c

PHP+MYSQL会员系统的开发实例教程_php技巧

本文通过一个简单的实例完成了完整的PHP+MySQL会员系统功能.是非常实用的一个应用.具体实现步骤如下: 一.会员系统的原理:    登陆-->判断-->保持状态(Cookie或Session)-->验证状态及其权限 二.会员系统的安全: 1.学会使用常量提高md5安全性 2.Cookie/ Session 少用明文信息 3.Session安全性要大于Cookie 4.使用Cookie/ Session读取信息 尽量增加判断信息 5.Cookie/ Session内容要精简 6.对于错

MySQL 触发器的基础操作(六)_Mysql

1.为什么使用触发器:      在MySQL数据库中,数据库对象表是存储和操作数据的逻辑结构,而数据库对象触发器则用来实现由一些表事件触发的某个操作.在数据库系统中,当执行表事件时,则会激活触发器,从而执行器包含的操作.触发器的操作包含创建.查看.删除.      触发器是数据库对象之一,该对象与编程语言 中的函数非常类似,都需要声明.执行等.但是触发器的执行不是由程序调用,也不是由手工启动,而是由事件来触发.激活从而实现执行.例如:在学生表中有学生名字.学生总数字段,每当添加一条学生记录时,

MySQL触发器的应用案例

网友问题:对于MySQL主从复制结构中,如何让Slave过滤delete操作. 问题分析:该问题对应的是保全所有的记录,包括delete的记录. 对于MySQL本身的过滤规则粒度是精确到表的粒度. 主从可以由不同的触发器 问题结果,在slave上建立before触发器,对于delete的记录备份至另一个表. 存在问题,MySQL触发器在高并发下的性能问题. 触发器源代码: CREATE TRIGGER delbak BEFORE DELETE ON tb_name FOR EACH ROW BE

MySQL入门教程(五)之表的创建、修改和删除_Mysql

MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成. 表是DB存储数据的基本单位,一个表包含若干个字段或记录.表的操作包括创建.修改和删除. 1.创建表 创建表即在已存在的数据库中创立新表.在使用USE语句选择具体数据库后,可以使用它SQL语句创建表 其中,属性名指表中字段的名称,数据类型即对应字段的数据类型,完整性约束条件指