• 利用触发器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;
	
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐