首页
学习
活动
专区
圈层
工具
发布

【MySQL-20】关于触发器,你需要知道这些——>定义(创建&查看&删除) 触发器,将变更日志插入日志表中

本章主要内容面向接触过C++的老铁 主要内容含: 一.触发器的介绍&类型 注意:触发器只支持 行级触发器 二.触发器操作的相关语法【创建&查看&删除】 三.定义触发器,完成如下需求 -- 触发器...-- 需求:通过触发器记录 user 表的数据变更日志(user_logs),包含增加,修改 ,删除; -- 准备工作:日志表 user_logs create table user_logs(...; -- 插入数据触发器 create trigger tb_user_insert_trigger after insert on tb_user for each row begin...:id=',new.id,',name=',new.name, ',phone=',NEW.phone,",email=' end ; -- 测试:插入数指型tb_user insert into tb_user...create trigger tb_user_delete_trigger after delete ontbuser for each row begin insert into user_logs

26810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    mysql创建临时表,将查询结果插入已有表中

    我记得学数据库理论课老师说可以创建临时表,不知道mysql有没有这样的功能呢?临时表在内存之中,读取速度应该比视图快一些。然后还需要将查询的结果存储到临时表中。...下面是创建临时表以及插入数据的例子,以供大家参考。...A、临时表再断开于mysql的连接后系统会自动删除临时表中的数据,但是这只限于用下面语句建立的表: 1)定义字段   CREATE TEMPORARY TABLE tmp_table (      ...2)直接将查询结果导入临时表   CREATE TEMPORARY TABLE tmp_table SELECT * FROM table_name B、另外mysql也允许你在内存中直接创建临时表,...TABLE tmp_table (      name VARCHAR(10) NOT NULL,      value INTEGER NOT NULL   ) TYPE = HEAP 那如何将查询的结果存入已有的表呢

    11.5K50

    sql server触发器实现插入时操作另一张表

    new 在mysql中,用new.NAME 可以得到触发器触发插入的值,而sql server不是这样的,sql server是把处罚的数据放在一个临时表中,所以它的操作是这样的 #inserted代表插入数据的那张临时表...,同时还有deleted 这张用作删除数据的临时表 select STCD from inserted #若只是把插入的数据插入另一张表,语句如下 insert into WQ_WWFINF_D_REAL...,改触发器的作用是把原始数据表的数据插入到实时数据表中,如果实时表没有该数据,就插入,如果有,就删除再插入 BEGIN declare @stcd varchar(30); declare @count...WQ_MNINF_D_REAL select STCD,TYPE,UPPERVALUE,LOWERVALUE,TM,NT,@smid,@stnm,@prjcd,@pipcd from inserted; end else...begin delete WQ_MNINF_D_REAL where STCD=@stcd; insert into WQ_MNINF_D_REAL select STCD

    1.6K20

    MySQL从删库到跑路_高级(五)——触发器

    在修改或删除时级联修改或删除其它表中的与之匹配的行。 在修改或删除时把其它表中的与之匹配的行设成NULL值。 在修改或删除时把其它表中的与之匹配的行级联设成缺省值。...3、触发器的限制 A、触发程序不能调用将数据返回客户端的存储程序,也不能使用采用CALL语句的动态SQL语句,但是允许存储程序通过参数将数据返回触发程序,也就是存储过程或者函数通过OUT或者INOUT类型的参数将数据返回触发器是可以的...trigger_event:触发事件,为INSERT、DELETE或者UPDATE。 tb_name:表示建立触发器的表名,在哪张表上建立触发器。...';else select xxxx into mesg; end if; End 验证触发器,如果手机列插入的值位数不对或者第一位不是1,插入都将失败。...insert into personinfo VALUES('唐僧', '男','2890000001'); 4、使用触发器审计 使用触发器实现对personinfo表数据操作的跟踪,将跟踪事件记录到一张审计表中

    1.5K20

    oracle insert 将一张表数据插入另外表中

    将一张表的数据插入两外张表 以表B的数据插入表A, 表B有多少符合条件的数据, 表A就插入多少条数据 如表B符合条件有10条数据,表A也会添加10条数据 case 1 两张表的结构完全一样 insert...into tableA select * from tableB case 2, 两张表的结构不一样,只获取表B中符合条件的一些列的数据 insert into tableA (name,age)...select b.studentname, b.age from tableB b where b.id>30 case 3, 两种表的结构不一样,需要获取表B中的符合条件的一些列的数据,还要某些列的特定数据...如需要在表A的列添加老师,学校,值是 ‘陈大文’,‘光明中学’,而表B没有老师,学校列,那么可以以固定值出现在表B输出中 insert into tableA (name,age,teacher,school

    2.8K10

    2024 Mysql基础与进阶操作系列之MySQL触发器详解(20)作者——LJS

    1.MySQL触发器详解 数据库触发器是一种在特定数据操作(如插入、更新或删除)发生时自动执行的动作。本文将介绍MySQL触发器的基础知识和使用方法。...按数据操作类型分类INSERT触发器:在插入数据之前或之后执行触发器逻辑 UPDATE触发器:在更新数据之前或之后执行触发器逻辑 DELETE触发器:在删除数据之前或之后执行触发器逻辑 额外补充举例...> 30) THEN -- 逻辑语句1 ELSE -- 逻辑语句2 END IF; END; INSERT、UPDATE、DELETE: 分别表示插入、更新和删除操作的关键字,...} {INSERT | UPDATE | DELETE} ON table_nameFOR EACH ROWBEGIN END; 触发器定义之选项参数详解说明表: 选项参数 详解说明 trigger_name...,可以是插入数据(INSERT)、更新数据(UPDATE)或删除数据(DELETE) table_name: 指定触发器所属的表名 FOR EACH ROW: 确保触发器逻辑应用于每一行受影响的数据 BEGIN

    28710

    SQLServer 触发器

    .是一个事务(可回滚,不能手动提交) 触发器的类型 delete触发器 当删除表中记录时触发,自动执行触发器所定义的SQL语句 insert触发器 当向表中插入数据时触发,自动执行触发器所定义的SQL...,如果不满足,则向用户报告错误消息,并回滚插入操作 deleted表:表用于存储 DELETE 和 UPDATE 语句所影响的行的副本 1.在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除...分析: 1.在交易信息表上创建INSERT触发器 2.从inserted临时表中获取插入的数据行 3.根据交易类型(transType)字段的值是存入/支取, 4.增加/减少对应帐户的余额。...2.再插入新行:李四 1000 0002 20001,将数据备份到inserted表中。 最后看起来就是把余额从1元修改为20001元了。...触发器一般都需要使用临时表:deleted表和inserted表,它们存放了被删除或插入的记录行副本 触发器类型:INSERT触发器、UPDATE触发器、DELETE触发器

    2.2K20

    如何使用SQL语句创建触发器

    例如当对某一表进行诸如UPDATE(修改)、INSERT(插入)、DELETE(删除)这些操作时,SQL Server 就会自动执行触发器所定义的SQL语句,从而确保对数据之间的相互关系,实时更新. 1.2...例如:对A表进行操作时,导致A表上的 触发器被触发,A中的 触发器中包含有对B表的数据操作(UPDATE(修改)、INSERT(插入)、DELETE(删除)),而该操作又导致B表上 触发器被触发。...二、使用SQL语句创建触发器实例 1.创建after融发器 (1)创建一个在插入时触发的触发器sc_insert,当向sc表插入数据时,须确保插入的学号已在student表中存在,并且还须确保插入的课程号在...Course_del,当删除了Course表中的一条课程信息时,同时将表sc表中相应的学生选课记录删除掉。...Course表中的值一致﹔如果新成绩小于60分,则该生未能获得学分,修改值为0。

    81910

    SQL命令 CREATE TRIGGER(二)

    请注意,将%ok设置为非数字值将设置%ok=0。 即使是多事件触发器,系统也只生成一次触发器代码。...对于INSERT,返回插入的值。 对于DELETE,返回删除前的字段值。 {fieldname*O} 对于UPDATE,返回进行指定更改之前的旧字段值。 对于INSERT,返回NULL。...对于UPDATE、INSERT或DELETE,{fieldname}返回与{fieldname*N}相同的值。 例如,以下触发器返回插入到Sample.Employee中的新行的Name字段值。...触发器插入数据表的名称、已删除行的RowId、当前日期和执行的操作类型(%oper特殊变量),在本例中为“DELETE”: ClassMethod CreateTrigger() { &sql(...,"SQL触发器代码为: ",SQLCODE } 以下示例演示了使用SQL INSERT触发器的CREATE TRIGGER。第一个嵌入式SQL程序创建表、该表的插入触发器和日志表以供触发器使用。

    2K20

    mysql将数据表插入到另一个数据库的表

    在MySQL中,如果你想要将一个数据库中的数据表插入到另一个数据库的表中,可以使用`INSERT INTO ... SELECT`语句;或者复制粘贴的方案。...SELECT`语句**:此语句允许你从一个或多个表中选取数据,并将其插入到另一个表中。 1.2 经典例子 假设你有两个数据库,`source_db`和`target_db`。...-- 假设source_table和target_table有相同的字段:id, name, age -- 将source_db.source_table中的数据插入到target_db.target_table...- 如果目标表中已经存在数据,并且你需要避免重复插入,你可能需要添加一些逻辑来处理这个问题,例如使用`ON DUPLICATE KEY UPDATE`语句或者在`SELECT`语句中添加一些条件来过滤已经存在的记录...- 如果两个表的结构不完全相同,你将需要调整`SELECT`语句中的字段列表和`INSERT INTO`语句中的字段列表,以确保数据正确地映射到目标表的列。 请根据你的具体需求调整上述示例代码。

    2.3K10

    走向面试之数据库基础:三、SQL进阶之变量、事务、存储过程与触发器

    触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程,它一般用在比check约束更加复杂的约束上面。   ...触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作,诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。...ON 表名 after(for)(for与after都表示after触发器) | instead of UPDATE|INSERT|DELETE(insert,update,delete) AS...那么,现在我们有这样一个需求:在每次向成绩表中添加新数据的时候,首先判断插入的学生学号是否存在于Student表中,如果存在则显示“插入成功”,如果不存在(也就是操作人员输入有误)那么则此次新增操作作废...’ else --如果不存在,则把更新增成功的分数记录给删除掉 delete from Score where sId = @stuid and cId = @courseid

    1.4K20

    MySQLMariaDB触发器详解

    old表表示删除目标记录之后将删除的记录保存在old表中,即deleted表。new表表示向表中插入新记录之前,新记录保存在new表中,即inserted表。...:当向表emp中insert数据时,将首先激活该触发器,该触发器首先会将待插入数据填充到new表中,再向审核表audit中插入一行数据,并标明此次触发操作是"before insert"。...after insert触发器的作用是:当向表emp中insert数据时,将先将数据填充到new表中,再插入到emp表,之后激活该触发器,该触发器会向审核表audit中插入一行数据,并标明此次触发操作是...replace to算法说明如下: 尝试插入新行。 存在重复值冲突时,从表中删除重复行。 将新行插入到表中。...也就是说,存在重复值冲突时,如果使用触发器的话,将先触发before insert,再触发delete操作,先是before delete再是after delete,最后触发after insert。

    2.1K20

    03-PDI(Kettle)导入与导出CDC

    , 后面的AFTER表示插入后执行,可选BEFORE, 后面的INSERT表示插入时触发器执行, ON studentinfo 表示触发器定义在某表中, FOR EACH ROW表示每行都会触发...,不再重复描述 创建DELETE触发器 创建INSERT触发器tri_delete_student DROP TRIGGER IF EXISTS tri_delete_student; DELIMITER...(5)Insert Update:UpdateCDCOptLog 这一步骤会将cdc_opt_log表在的optflag字段修改为res值(已完成) (6)Delete : DeleteStudentFromSyncTable...FROM 旧表 5、可以将表1结构复制到表2 SELECT * INTO 表2 FROM 表1 WHERE 1=2 6、可以将表1内容全部复制到表2...synchronize after merge空间常与Merge rows diff联合使用,用于合并后同步信息 =根据某个字段值的条件插入,删除,更新数据库表 (2)table input1

    88720

    Oracle触发器用法实例详解

    触发时间:指明触发器何时执行,该值可取: before:表示在数据库动作之前触发器执行; after:表示在数据库动作之后触发器执行。...触发事件:指明哪些数据库动作会触发此触发器: insert:数据库插入会触发此触发器; update:数据库修改会触发此触发器; delete:数据库删除会触发此触发器。..., :OLD.NAME, :OLD.AGE, :OLD.SEX); --:old代表旧值 END; / --下面进行测试 DELETE employee; SELECT * FROM old_employee...; 5)、创建触发器,利用视图插入数据 --创建表 CREATE TABLE tab1 (tid NUMBER(4) PRIMARY KEY,tname VARCHAR2(20),tage NUMBER...,将操作CREATE、DROP存储在log_info表 --创建表 CREATE TABLE log_info(   manager_user VARCHAR2(15),   manager_date

    1.3K10
    领券