- 利用触发器trigger实现数据库两表之间的数据同步更新,这里使用的操作软件为Navicate。
先创建测试的两张表,表students和表studentstest
#创建学生表
CREATE TABLE `students` (
`stu_num` char(4) NOT NULL,
`stu_name` varchar(20) NOT NULL,
`stu_gender` char(2) NOT NULL,
`stu_age` int NOT NULL,
PRIMARY KEY (`stu_num`)
)
#创建所要同步的学生表(字段相同)
CREATE TABLE `studentstest` (
`stuNum` char(4) NOT NULL,
`stuName` varchar(20) NOT NULL,
`stuGender` char(2) NOT NULL,
`stuAage` int NOT NULL,
PRIMARY KEY (`stu_num`)
)
触发器创建语法
create trigger trigger_test(触发器名) after insert on students(表名) for each row
begin
#【这里是增删改的内容】
end
我们这里在表students创建触发器trigger_test,for each row 是指行级触发,对于受触发事件影响的每一行都要激活触发器的动作。
实现的是在students进行增删改操作后,studentstest表的相应字段进行同样的操作。
- 增
#创建触发器trigger_test实现students增加内容时studentstest同步
create trigger trigger_test after insert on students for each row
begin
insert into studentstest(stuNum,stuName,stuGender,stuAge)
values(new.stu_num,new.stu_name,new.stu_gender,new.stu_age);
end
#测试增加students内容
insert into students(stu_num,stu_name,stu_gender,stu_age)
values("1002","张三","男",20);
效果如下,成功实现。
- 删
#创建触发器trigger_test实现students删除内容时studentstest同步
create trigger trigger_test1 after delete on students for each row
begin
delete from studentstest where stuNum=old.stu_num ;
end
#测试删除students中的内容
delete from students where stu_num="1002";
- 改
#创建触发器trigger_test实现students修改内容时studentstest同步
create trigger trigger_test2 after update on students for each row
begin
update studentstest set stuName=new.stu_name,stuGender=new.stu_gender,stuAge=new.stu_age where stuNum=old.stu_num ;
end
#测试更新students中的内容
update students set stu_name="lisi",stu_gender="女",stu_age=21 where stu_num=1002;
- 完整代码如下:
#创建学生表
CREATE TABLE `students` (
`stu_num` char(4) NOT NULL,
`stu_name` varchar(20) NOT NULL,
`stu_gender` char(2) NOT NULL,
`stu_age` int NOT NULL,
PRIMARY KEY (`stu_num`)
)
#创建所要同步的学生表(字段相同)
CREATE TABLE `studentstest` (
`stuNum` char(4) NOT NULL,
`stuName` varchar(20) NOT NULL,
`stuGender` char(2) NOT NULL,
`stuAage` int NOT NULL,
PRIMARY KEY (`stu_num`)
)
#创建触发器trigger_test实现students增加内容时studentstest同步
create trigger trigger_test after insert on students for each row
begin
insert into studentstest(stuNum,stuName,stuGender,stuAge)
values(new.stu_num,new.stu_name,new.stu_gender,new.stu_age);
end
#测试增加students内容
insert into students(stu_num,stu_name,stu_gender,stu_age)
values("1002","张三","男",20);
#创建触发器trigger_test实现students删除内容时studentstest同步
create trigger trigger_test1 after delete on students for each row
begin
delete from studentstest where stuNum=old.stu_num ;
end
#测试删除students中的内容
delete from students where stu_num="1002";
#创建触发器trigger_test实现students修改内容时studentstest同步
create trigger trigger_test2 after update on students for each row
begin
update studentstest set stuName=new.stu_name,stuGender=new.stu_gender,stuAge=new.stu_age where stuNum=old.stu_num ;
end
#测试更新students中的内容
update students set stu_name="lisi",stu_gender="女",stu_age=21 where stu_num=1002;
更多推荐