一个Mysql触发器例子--状态改变的同时更新同表中的另一字段

#表(jc_shop_product )中有一状态值--是否上架(on_sale) 若由未上架(0)转为上架(1) 同时设置上架时间(on_sale_time)

drop trigger if exists update_on_sale_time_of_product;
delimiter //     
CREATE TRIGGER update_on_sale_time_of_product BEFORE UPDATE ON jc_shop_product    
FOR EACH ROW     
BEGIN     
IF OLD.on_sale=0 && NEW.on_sale=1 THEN     
SET NEW.on_sale_time=now(); 
END IF;     
END;
//     
delimiter ;
时间: 2024-10-12 15:59:11

一个Mysql触发器例子--状态改变的同时更新同表中的另一字段的相关文章

MYSQL 表中汉字写入或字段赋值时乱码情况排误

-- 当修改字段值,或是直接写入时,汉字变成乱码情况 ,[可注意一下数据库名,记得修改] -- 当字符顺序对汉字不兼容时,可能直接导致乱码情况发生. 最好做到库.表.字段(字符类型)排序规则是否一致 -- eg.在某库下建了临时表没有指定字符排序规则,下游会使用时,将临时表中的str字段值赋值给另外一个库表,可能会出现乱码 -- 未指定排序建表时,则表的排序规则是其库的排序规则 -- 1. 库级别 SELECT * -- DEFAULT_CHARACTER_SET_NAME DEFAULT_CO

MySQL 触发器例子(两张表同步增加和删除)

其中old表示tab2(被动触发),new表示tab1(主动触发,外部应用程序在此表里执行insert语句) DROP TABLE IF EXISTS tab1; CREATE TABLE tab1( tab1_id varchar(11) ); DROP TABLE IF EXISTS tab2; CREATE TABLE tab2( tab2_id varchar(11) ); 创建触发器:t_afterinsert_on_tab1 作用:增加tab1表记录后自动将记录增加到tab2表中 d

MySQL批量更新不同表中的数据

今天翻到以前写的批量更新表中的数据的存储过程,故在此做一下记录. 当时MySQL中的表名具有如下特征,即根据需求将业务表类型分为了公有.私有和临时三种类型,即不同的业务对应三张表,而所做的是区分出是什么类型(公有.私有.临时)的业务表对数据的固定字段做统一规律的处理. 下面为当时所编写的存储过程: BEGIN DECLARE done INT; DECLARE v_table_name VARCHAR(100); DECLARE v_disable VARCHAR(100); DECLARE v

取两张mysql表中分别两个字段相同的值

看起来有点绕口吧,举个例子吧,如图 两张表,字段名也不同字段gs 和另一张表 gsmc  的有些值是相同的 我们要做的就是把这个相同的值找出来 会写这个sql语句就可以 只写重点 $sql2 = " select gs from yixiangkh where gs in (select gsmc from qiandan ) " ; //执行 $result2 = $db->query($sql2,0); //取数据 $attr2 = $result2->fetch_al

MySQL存储过程---涉及多个表之间的关联关系,且各表中具有相同的字段,以主键id 为例,一定要使用 xx.id加以区分

此篇不放存储过程实例了. 这是我在开发存储过程中碰到的耗时最久的一次问题,存储过程可以跑,但是得到的结果不是自己想要的, 排查了很久,发现是此句中的id惹的祸:   SET projectInfoId =(SELECT id FROM temp.PROJECT_INFO p WHERE 1=1 AND p.ISSUE_KEY = projectKey); 修改为p.id 就OK了 要养成良好习惯,在写字段时记得一定使用 X.xx的格式,避免不必要的错误.

mysql触发器与存储过程

外键 外键:foreign key,(键不在自己表中):如果一张表中有一个字段(非主键)指向另外一张表的主键,那么将该字段称之为外键. 增加外键 外键可以在创建表时候,或者创建表之后增加.(但是要考虑数据的问题),一张表可以有多个外键. 创建表的时候增加外键 -- 在所有的表字段之后,使用foreign key(外键字段) references 外部表(主键字段) 下面为之前的my_class表(表结构如下图)增加一个外键 create table my_foreignone( id int p

MySQL触发器分析

触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力. 数据库触发器有以下的作用: 1.安全性.可以基于数据库的值使用户具有操作数据库的某种权利. # 可以基于时间限制用户的操作,例如不允许下班后和节假日修改数据库数据. # 可以基于数据库中的数据限制用户的操作,例如不允许股票的价格的升幅一次超过10%. 2.审计.可以跟踪用户对数据库的操作. # 审计用户操作数据库的语句. # 把用户对数据库的更新写入审计表. 3.实

mysql触发器trigger 实例详解

MySQL好像从5.0.2版本就开始支持触发器的功能了,本次博客就来介绍一下触发器,首先还是谈下概念性的东西吧: 什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合.触发器的这种特性可以协助应用在数据库端确保数据的完整性. 举个例子,比如你现在有两个表[用户表]和[日志表],当一个用户被创建的时候,就需要在日志表中插入创建的log日志,如果在不使用触发器的情况下,你需要编写程序语言逻辑才能实现,但是如果你定义了一个触发器,触发器的作用就是当你在用户表中

MySQL——触发器的创建和使用总结

原文http://blog.csdn.net/goskalrie/article/details/53020631 什么是触发器 触发器(TRIGGER)是MySQL的数据库对象之一,从5.0.2版本开始支持.该对象与编程语言中的函数非常类似,都需要声明.执行等.但是触发器的执行不是由程序调用,也不是由手工启动,而是由事件来触发.激活从而实现执行.有点类似DOM中的事件. 那么为什么要使用数据库对象触发器呢?在具体开发项目时,经常会遇到如下实例: <1> 在学生表中拥有字段学生姓名,字段学生总