网站制作学习网经验与学习→正文:mysql触发器
字体:

mysql触发器

经验与学习 2016/1/25 15:30:57  点击:不统计

http://%77%77%77%2E%66网站制作%6F学习网%72%61%73%70%2E%63%6E
 我们学习一下触发器的相关内容

先说一下触发器的几个关键内容
1. 需要出发的表,即在哪个表上创建
2. 触发事件发生的时刻,是在触发事件前,事件后
3. 触发什么事件
4. 触发事件对应的返回值
5. 触发器的创建和删除
 
一 先看触发器创建的语法
 
create trigger 触发器名称
after/before(触发事件发生的时刻) insert/update/delete(触发什么事件) on 表名
for each row   #这句话在mysql是固定的
begin
sql(执行的相关操作);
end;
上面写了 时刻,事件 以及表名称
二 看一下触发器的返回值
 
insert新插入的行用new表示,行中的每一列的值用new.列名
delete删除,想引用被删除的这一行,用old来表示,行中的每一列的值用old.列名
update而言:被修改的行,修改前的数据,用old来表示;修改的后的数据,用new来表示。
 
三 例子
 说明 我们创建两个表 forasp_count 数量统计表  forasp_news 新闻表 forasp_delete表删除表
 forasp_count表
 id      int  11  默认序号        id默认为1
 number  int  11  统计news总数    仅有1行 统计总数
 sumnid  int  11  统计news nid求和仅有1行 统计nid的数量和
 
 forasp_news 表 
 nid     int  11    新闻的ID
 title varch 255 新闻title
 
 forasp_delete 表 
 delnid   int 11  记录删除的nid
 
(1) 创建 insert 触发器 例子
CREATE TRIGGER `create_t` AFTER INSERT ON `forasp_news`
FOR EACH ROW update forasp_count
set number = number+1,sumnid=sumind+new.nid;
上面例子: 
触发器名字create_t
事件类型 INSERT
触发表名 forasp_news
触发时刻 AFTER
更新内容 set number = number+1,sumnid=sumind+new.nid;
 
(2) 创建 update 触发器 例子
CREATE TRIGGER `updata_t` AFTER UPDATE ON `forasp_news`
FOR EACH ROW update forasp_count
set number = number+2,sumnid=sumnid+old.nid+2;
 
触发器名字create_t
事件类型 UPDATE
触发表名 forasp_news
触发时刻 AFTER
更新内容 更新表forasp_count set number = number+2,sumnid=sumnid+old.nid+2;
 
(3) 创建 delete 触发器 例子
CREATE TRIGGER `delete_t` BEFORE DELETE ON `forasp_news`
FOR EACH ROW update forasp_count
set number = number - 2,sumnid=sumnid - old.nid;;
触发器名字 delete_t
事件类型 DELETE
触发表名 forasp_news
触发时刻 BEFORE
更新内容 更新表 forasp_count set number = number - 2,sumnid=sumnid - old.nid;;
 
(4) 删除 触发器
DROP TRIGGER `delete_t`;
删除触发器 直接删除触发器的名字 delete_t

forasp.cn

·上一篇:PHP message: PHP Warning: mysql_connect(): No such file or directory >>    ·下一篇:单点网站架构-网站架构 >>
推荐文章
最新文章