Mysql 创建一个触发器,实现两表之间同步

1.建person表

CREATE TABLE `person` (
`id` int(11) DEFAULT NULL,
`name` varchar(256) DEFAULT NULL,
`sex` char(16) DEFAULT NULL
)

建person_ex
CREATE TABLE `person_ex` (
`id` int(11) DEFAULT NULL,
`name` varchar(256) DEFAULT NULL,
`sex` char(16) DEFAULT NULL
)

2.实现的目标当person新增一条记录,更新一条记录或者删除一条记录,person_ex中sex字段为M的记录跟着改变

sql代码如下:

创建插入触发器

create trigger person_trigger AFTER insert on person for each row
begin set @x = "hello trigger";
IF new.sex = ‘M‘
THEN
INSERT INTO person_ex(id,name,sex) VALUES (New.id,new.`name`,new.sex);
END IF;
end;

创建更新触发器:
create trigger person_trigger_update AFTER UPDATE on person for each row
begin set @x = "trigger UPDATE";
IF new.sex = ‘M‘
THEN
DELETE from person_ex where person_ex.id = new.id;
INSERT into person_ex SELECT * from person where person.id = new.id;
END IF;
end;

创建删除触发器:

create trigger person_trigger_delete AFTER DELETE on person for each row
begin set @x = "trigger DELETE";
DELETE FROM person_ex where person_ex.id = old.id;
end;

3.测试SQL代码:

INSERT into person (id,name,sex) VALUES (1,‘chigo‘,‘M‘)

INSERT into person (id,name,sex) VALUES (2,‘Tony‘,‘F‘)

update person set name = ‘vara‘ , sex = ‘F‘ where id = 1

update person set name = ‘Tony‘ , sex = ‘M‘ where id = 1

update person set name = ‘vara‘ , sex = ‘M‘ where id = 1
DELETE from person where id = 1
INSERT into person_ex SELECT * from person where person.id = 1
update person set name = ‘vara‘ , sex = ‘F‘ where id = 1

时间: 2024-10-17 13:54:36

Mysql 创建一个触发器,实现两表之间同步的相关文章

MySQL触发器实现两表数据同步(详解)

1. 创建一个数据表 order_1,同时复制出一份表order_2表结构如下:CREATE TABLE a_order_1 (order_id int(11) NOT NULL AUTO_INCREMENT,order_sn varchar(100) DEFAULT NULL,user_nick varchar(100) DEFAULT NULL,user_mobile varchar(100) DEFAULT NULL,address varchar(255) DEFAULT NULL,st

Kettle创建一个简单的转换-表数据同步

1.创建一个转换 2.设置数据库连接配置 3.在核心对象中拖入一个表输入,并对表输入进行属性设置 4.在核心对象中拖入插入/更新组件 5.按住shift从表输入到插入/更新 6.在对插入/更新进行配置,在用来查询的关键字中需要设置连接的字段 7.保存,并运行这个转换. 原文地址:https://www.cnblogs.com/langzichanglu/p/11994025.html

SQL两表之间:根据一个表的字段更新另一个表的字段

1. 写法轻松,更新效率高: update table1 set field1=table2.field1, field2=table2.field2 from table2 where table1.id=table2.id 2. 常规方式,种写法相当于一个 Left join, 以外面的where为更新条数,如果不加where就是所有记录 update table1 set field1=(select top 1 field1 from table2 where table2.id=tab

Oracle开发:创建一个用户并分配表空间和分配权限

-- 创建一个用户并分配表空间和分配权限 -- 以sysdba登录 [email protected]:~> sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Mon Mar 7 18:48:59 2016 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition

UE4的编程C++创建一个FPSproject(两)角色网格、动画、HUD、子弹类

立即归还,本文将总结所有这些整理UE4有关角色的网络格.动画.子弹类HUD一个简单的实现. (五)角色加入网格 Character类为我们默认创建了一个SkeletaMeshComponent组件,所以我们只须要做的就是使用哪一个静态网格模型.接下来我们为我们的FPSCharacter类创建一个蓝图,这样我们能够简单的把资源指定给静态网格模型这里,而且方便以后操作加入的组件. 作为開始,我们首先要导入一个第三人称的静态网格模型.最后我们设置成两个网格,一个是我们自己看的,另外一个是其它人看到的.

MySQL 创建一个简单的成绩管理系统

操作过程使用实验楼. 首先是创建一个数据库studentsystem,使用语句是: CREATE DATABASE studentsystem;   查看创建好的数据库的命令还是show databases; 要在创建的数据库studentsystem中创建表格,首先要连接数据库,使用语句 use <数据库名称> ,这里使用  use studentsystem(没有分号). 在数据库中新建一张表格的语句格式是: CREATE TABLE 表的名字 (列名a 数据类型(数据长度),列名b 数据

触发器实现多表之间的增加、删除及更新

常见的触发器有三种:分别应用于Insert,Update,Delete事件 1.数据同步增加: 如有两张表:A表和B表,创建触发器使当A表插入数据后B表也同步插入数据.其中B表插入数据的字段需要同A表中的字段相对应. 1 create trigger 触发器名称 2 on A表 3 after insert 4 as 5 begin insert into B表(B表字段1,B表字段2,B表字段3) 6 select A表字段1,A表字段2,A表字段3 7 from inserted 8 end

mysql数据库去重语句和不同表之间列的复制语句

1.去重语句:DELETE FROM `v_klg_item` WHERE id NOT IN (SELECT * FROM (SELECT MAX(id) FROM `v_klg_item` GROUP BY NAME) AS tmp); 2.数据库不同表之间列的复制语句:INSERT INTO crm_add (id,address,pid) SELECT id,NAME,parentId FROM labos_area;

c#.net对excel的操作——创建一个excel报表两个sheet就是2个表分别添加内容

添加引用:Microsoft.Office.Interop.Excel //创建excel对象,就是实例化一个excel对象            Application excel=new Application();            //设置工作表的个数            excel.SheetsInNewWorkbook=2;            //创建Wprkbook            excel.Workbooks.Add();            //取出第一个工