当前位置: 首页 > 面试题库 >

mysql触发器怎么写

逑何平
2023-03-14
问题内容

有两个表的

表A

如果用户使用此查询“插入A值(abc,1,50);”

然后触发器应检查“表B”中的student_name,如果“表B”中已存在student_name,则更新表B中的“ all_marks”字段,例如,“
all_marks”应为60

如果“表B”中没有“ student_name”“ abc”,则应将相同的“ student_name”,“ student_class”,“
student_marks”插入表B

delimiter $$
create trigger insert_into_summary 
    after insert on A 
    for each row 
begin
     if
//** here i want to write the if condition **  
     insert into B (name,class,overall_marks)
     values(new.name,new.class,new.marks,);
     else 
     update B set all_marks=old.all_marks+new.student_marks;
end $$
delimiter ;

请帮我怎么写触发器。


问题答案:

您可以使用“重复密钥更新”简单地完成此操作。在学生姓名/ ID上添加唯一键,然后在触发器中使用以下代码

begin
   insert into summary_score (name,number,all_marks)
   values(new.name,new.marks,new.score)
   on duplicate key update all_marks=old.all_marks+new.student_marks
  where B.Name=new.Name;
end $$


 类似资料:
  • 主要内容:触发器的优缺点,MySQL 支持的触发器MySQL 的触发器和存储过程一样,都是嵌入到 MySQL 中的一段程序,是 MySQL 中管理数据的有力工具。不同的是执行存储过程要使用 CALL 语句来调用,而触发器的执行不需要使用 CALL 语句来调用,也不需要手工启动,而是通过对数据表的相关操作来触发、激活从而实现执行。比如当对 student 表进行操作(INSERT,DELETE 或 UPDATE)时就会激活它执行。 触发器与数据表关

  • 本文向大家介绍MySQL触发器 Update触发Insert失败,包括了MySQL触发器 Update触发Insert失败的使用技巧和注意事项,需要的朋友参考一下 今天工作需要,想要实现将仅对状态更新的表进行历史记录显示,于是考虑在原表中建立触发器,将更新的内容同时写入另一张表 于是进行测试 执行触发器语句,报错,报错内容如下: 分析,由于访问工具HediSQL,导致无法正常创建触发器,相同语句,

  • 主要内容:SHOW TRIGGERS语句查看触发器信息,在triggers表中查看触发器信息查看触发器是指查看数据库中已经存在的触发器的定义、状态和语法信息等。MySQL 中查看触发器的方法包括 SHOW TRIGGERS 语句和查询 information_schema 数据库下的 triggers 数据表等。本节将详细介绍这两种查看触发器的方法。 SHOW TRIGGERS语句查看触发器信息 在 MySQL 中,可以通过 SHOW TRIGGERS 语句来查看触发器的基本信息,语法格

  • 主要内容:基本语法,创建 BEFORE 类型触发器,创建 AFTER 类型触发器触发器是与 MySQL 数据表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。 基本语法 在 MySQL 5.7 中,可以使用 CREATE TRIGGER 语句创建触发器。 语法格式如下: CREATE <触发器名> < BEFORE | AFTER > <INSERT | UPDATE | DELETE > ON <

  • 嗨,我正在将我的所有表从一个数据库导入到另一个数据库,但不知何故,触发器没有被导入。使用MySQL5.6。所以我试图从以前的数据库中复制触发器语句来创建当前数据库中的触发器。分隔符$$ 我在工作台的输出部分中得到的错误 知道我做错了什么吗

  • 问题内容: 为了测试查询的正确性,我需要禁用db中的所有触发器。我看到在information_schema中存在表TRIGGERS。是否可以使用此表暂时禁用所有触发器?例如: 完成所有测试后,返回所有触发器,例如: 可能这可能会损坏db或在触发后将不起作用?我没有在文档中找到它。 问题答案: 您不能直接禁用触发器,我也不建议您做您建议的事情,但是您可以让触发器检查变量(在下面的示例中)是否 在执