MySQL 插入后和更新后触发

2023-12-07

我有两张表,其中一张名为att如下

CREATE TABLE att (
  SID varchar(50) NOT NULL, 
  CID varchar(50) NOT NULL, 
  Date date NOT NULL,
  H1 varchar(1) NOT NULL DEFAULT 0,
  H2 varchar(1) NOT NULL DEFAULT 0,
  H3 varchar(1) NOT NULL DEFAULT 0,
  H4 varchar(1) NOT NULL DEFAULT 0,
  H5 varchar(1) NOT NULL DEFAULT 0,
  H6 varchar(1) NOT NULL DEFAULT 0,
  H7 varchar(1) NOT NULL DEFAULT 0,
  H8 varchar(1) NOT NULL DEFAULT 0,
  H9 varchar(1) NOT NULL DEFAULT 0,
  H10 varchar(1) NOT NULL DEFAULT 0,
  INDEX (SID, CID)
);

另一张表是per具有以下字段:
SID CID 每

如何为以下内容编写触发器:
如果 h1-h0 中的任何字段发生更新att然后表
更新per栏目中的per具有以下值的表:
((1总数-0总数)/(1总数+0总数))/100

提前致谢
我开发了一个触发器,但它不起作用,它在第 11 行显示错误,你能说出问题是什么吗?

create TRIGGER `att_up` AFTER UPDATE ON `attentance`
FOR EACH ROW BEGIN
  DECLARE Zeros INT;
  DECLARE Ones INT;
  DECLARE total INT;
  DECLARE atted FLOAT;
  SELECT SUM(8-(h1+h2+h3+h4+h5+h6+h7+h8)) 
      INTO Zeros FROM attentance 
      WHERE StudID=NEW.StudID;
  SELECT SUM(h1+h2+h3+h4+h5+h6+h7+h8) 
      INTO Ones FROM attentance 
      WHERE StudID=NEW.StudID;
  SELECT SUM(8-(h1+h2+h3+h4+h5+h6+h7+h8))+ SUM(h1+h2+h3+h4+h5+h6+h7+h8) 
      INTO total FROM attentance 
      WHERE StudID=NEW.StudID;
  set atted=((ZEROS-Ones)/total)/100;
  INSERT into per(per) values (atted);
END$$

确保在定义触发器之前更改分隔符。还要确保在创建表和触发器时使用相同的表名和列名(您正在使用att and attendance, and SID and StudID,在你的例子中)。

事实上,在设置分隔符后,我在 MySQL 5.1.55 中测试触发器定义时没有出现错误。

delimiter $$
CREATE TRIGGER `att_up` 
  AFTER UPDATE ON `attendance`
FOR EACH ROW 
BEGIN
  DECLARE Zeros INT;
  DECLARE Ones INT;
  DECLARE total INT;
  DECLARE attend FLOAT;
  SELECT SUM(8-(h1+h2+h3+h4+h5+h6+h7+h8)), 
         SUM(h1+h2+h3+h4+h5+h6+h7+h8),
         SUM(8-(h1+h2+h3+h4+h5+h6+h7+h8)) + SUM(h1+h2+h3+h4+h5+h6+h7+h8)
    INTO Zeros, Ones, Total FROM attendance 
    WHERE SID=NEW.SID;
  SET attend=((Zeros-Ones)/total)/100;
  INSERT INTO per (SID, CID, per) values (NEW.SID, NEW.CID, attend)
    ON DUPLICATE KEY UPDATE per=attend;
END$$
delimiter ;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 插入后和更新后触发 的相关文章

  • sql查询获取从一月到当月的所有数据,即使没有记录

    我不擅长 sql 所以任何帮助世界都很棒 我有一个 SQL 查询 可以获取从一月到当月注册的记录 我的代码示例 SELECT DatePart YEAR p createStamp as TheYear DatePart MONTH p c
  • 如何搜索例程的内容/(SP-触发函数)

    我需要在数据库内所有例程的例程主体 存储过程 函数 触发器 中搜索文本 我该怎么做 Thanks SELECT OBJECT NAME object id FROM sys sql modules WHERE definition LIKE
  • 非常大的字段会对 MySQL 数据库产生负面影响吗?

    我目前正在使用 Django 构建一个网站 并希望托管用户生物样式页面 该页面可能长达几 KB 这些字段不一定需要搜索 但在查找用户名时确实需要提供 将这些数据存储在数据库中会产生负面影响吗 如果我使用带有数据库链接的静态文本文件 我的服务
  • 实现软删除的最佳方法是什么?

    目前在做一个项目 我们要对大部分用户 用户角色 实现软删除 我们决定添加一个is deleted 0 数据库中每个表的字段并将其设置为 1 如果特定用户角色点击特定记录上的删除按钮 现在为了将来的维护 每个SELECT查询需要确保它们不包含
  • JDBC插入实数数组

    我试图将一个真实的数组插入到 postgresql 数组中 该表的定义是 String sqlTable CREATE TABLE IF NOT EXISTS ccmBlock sampleId INTEGER block REAL 插入内
  • 在 jQuery AJAX 成功中从 MySql 获取特定响应

    好吧 我有这个 ajax 代码 它将在 Success 块中返回 MySql 的结果 ajax type POST url index php success function data alert data My Query sql SE
  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • PHP MySql 百分比

    我的问题是关于百分比 我不是专家 所以我会尽力以更好的方式进行解释 我的 mysql 服务器中有一个表 假设有 700 条记录 如下所示 Name country language Birth Lucy UK EN 1980 Mari Ca
  • PHP MySQL 使用选项/选择 HTML 表单标签进行多重搜索查询

    我正在尝试使用两个搜索字段设置基本的 MySQL LIKE 搜索 我不想拥有它 所以它有多个可选搜索字段 例如if isset POST city isset POST name 我不知道如何用 HTML 来做到这一点
  • 使用子查询 select 创建新表

    我试图从子查询选择创建一个新表 但出现以下错误 附近的语法不正确 SELECT INTO foo FROM SELECT DATEPART MONTH a InvoiceDate as CalMonth DATEPART YEAR a In
  • 如何通过Elasticsearch模糊匹配电子邮件或电话?

    我想通过 Elasticsearch 对电子邮件或电话进行模糊匹配 例如 匹配所有以以下结尾的电子邮件 gmail com or 匹配所有电话开头136 我知道我可以使用通配符 query wildcard email gmail com
  • 如何识别拼写不同的相似单词

    我想从数据库中过滤掉重复的客户名称 一位客户可能有多个同名但拼写差异不大的系统条目 这是一个示例 名为 Brook 的客户可能有 3 个系统条目 有了这个变化 布鲁克 贝尔塔 布鲁克 贝尔塔 比鲁克 贝尔塔 假设我们将此名称放入一个数据库列
  • 获取带有计数的不同记录

    我有一张桌子personid and msg列 personid msg 1 msg1 2 msg2 2 msg3 3 msg4 1 msg2 我想得到总计msg对于每个personid 我正在尝试这个查询 select distinct
  • 如何在 DB2 中创建返回序列值的函数?

    如何在 DB2 中创建一个从序列中获取值并返回该值的函数 应该可以在 select 或 insert 语句中使用该函数 例如 select my func from xxx insert into xxx values my func 基本
  • SELECT max(x) 返回 null;我怎样才能让它返回0?

    运行以下命令时如何返回 0 而不是 null SELECT MAX X AS MaxX FROM tbl WHERE XID 1 假设没有XID 1的行 or SELECT coalesce MAX X 0 AS MaxX FROM tbl
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • 如何在 SQL Server 中连接

    我的数据库没有特定的列 因此我通过开关在查询中创建了一个列 我需要的是将此列与数据库中的另一列连接起来 select certificateDuration DurationType case when certificateDuratio
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val

随机推荐

  • 在多个数据库上安装存储过程

    有什么方法可以轻松地在多个 MySQL 数据库上同时创建存储过程吗 所有数据库都安装在同一个 MySQL 上 在所有模式中安装 要获取模式列表 请使用show databases 将此与 use use schemaA use schema
  • 始终在 console.log 中显示 html 元素 (Chromium)

    我有一个 js 脚本console log有时会打印 html 元素 Chrome 有两种打印此类 DOM 元素的模式 在 html 样式中 例如 div class abc div 其中悬停会突出显示页面中的元素 然后单击会打开 DOM
  • iPhone 5 + iOS6 如何决定应用程序是否必须在信箱模式下运行

    iOS6 如何决定应用程序是否必须在 iPhone 5 上以信箱 兼容模式运行 这是构建设置参数 如 目标设备系列 吗 或者所有基于最新 SDK 构建的应用程序都必须支持 iPhone 5 屏幕尺寸 或者应用程序将以信箱模式运行 是否没有
  • 如何在 makefile 中使用 LDFLAGS

    我是 Linux 操作系统的新手 我正在尝试编译一个 c使用 makefile 文件 必须链接数学库 我的 makefile 如下所示 CC gcc CFLAGS Wall lm all client PHONY clean clean r
  • 如何连接两个不同形状的张量

    我有两个张量 get shape 400 和 1176 我想将它们连接成一个大小为 1576 的张量 我尝试了 concat 但它要求两者具有相同的维度 怎么办呢 希望您通过批量大小传递相同维度的输入 import tensorflow a
  • 指针前一变量

    据我所知 在 C 中检查指针是否是数组末尾的一个元素是完全合法的 如下所示 char arr 16 for char ptr arr ptr arr sizeof arr sizeof arr 0 ptr some code 我的问题是这样
  • MSbuild 任务失败,因为“任何 CPU”解决方案的构建顺序不正确

    我在 Teambuild 中构建两种解决方案 一种是应用程序本身 另一种是 WiX 安装程序 我想使用 任何 CPU 构建配置来构建应用程序 并使用 x86 来构建安装程序 我在项目文件中首先列出了 任何 CPU 解决方案 但 Teambu
  • pandas 按两列值过滤行,不区分大小写

    我有一个简单的数据框 如下所示 Last Known Date ConfigredValue ReferenceValue 0 24 Jun 17 False FALSE 1 25 Jun 17 FALSE FALSE 2 26 Jun 1
  • 正则表达式 WORD 的最后一个字符

    我正在尝试匹配单词中的最后一个字符 WORD 是非空白字符的序列 n r t f 或匹配 的空行 我为此所做的表达是 n t r f n t r f 正则表达式匹配空白字符或行尾后面的非空白字符 但我不知道如何阻止它从结果中排除以下空白字符
  • Swift 计算属性不能在 init 中使用?

    我正在尝试将 MultipeerConnectivity 框架与 Swift 一起使用 我有以下属性 var peerId MCPeerID let advertiser MCNearbyServiceAdvertiser let brow
  • 混合服务器端 java 和客户端 javascript 图表库?

    是否有一个库可以用 Java 和 Javascript 为相同的数据生成相同的图表 我的任务是 显示一些华丽的动态图表在浏览器中 更好地使用动态工具提示 缩放等 我在这里考虑Javascript 并在服务器端用 Java 生成相同 或足够相
  • 为什么 (Excel VBA) 组合框更改事件每次引用其属性之一时都会触发?

    我是这个论坛的第一次用户 这是我的场景 在用户表单上 我有一个组合框 两个文本框和一个 确定 按钮 当用户从组合框的下拉列表中进行选择时 组合框的更改事件将被触发 事件处理代码将根据用户的选择使用工作表中的信息填充文本框 然后 用户可以编辑
  • 从字符串中获取价格值

    我有一个字符串 其中价格值 544 50 可以位于字符串中的任何位置 例如 HP G60 630US 笔记本电脑 笔记本电脑 RadioShack com gt 259 97 radioshack com 我需要从字符串中获取值 259 9
  • 类型错误:“dict_keys”对象不支持索引

    def shuffle self x random None int int x random random random gt shuffle list x in place return None Optional arg random
  • 使用 PHPMailer 和 GMAIL SMTP 发送电子邮件

    我已经阅读了网络上的每个示例 但似乎仍然无法连接到 GMAIL SMTP 这是我正在运行的代码 include phpMailer class phpmailer php path to the PHPMailer class mail n
  • 多个枚举的国际化(枚举值的翻译)[重复]

    这个问题在这里已经有答案了 再次讨论过的事情before我想分享 我的 解决方案并寻求增强功能 其他方法或最佳实践 我有几个需要国际化的枚举 我需要将枚举值翻译成某些语言以便在 jsf 页面中显示它们 示例枚举 public enum Tr
  • java.io.IOException:收到的身份验证质询为空

    我需要获取响应代码 但它抛出 IOException 我不知道怎么了 try url new URL urlBuilder toString conn HttpURLConnection url openConnection conn se
  • 如何将 UCS2 字符串转换为 UTF8?

    如何将 UCS2 每个字符 2 个字节 的字符串转换为 Ruby 中的 UTF8 字符串 你应该调查一下iconv 它是 Ruby 标准库的一部分 它是为这项任务而设计的 具体来说 Iconv iconv utf 8 utf 16 str
  • 如何在子窗口出现时通过单击父窗口上的按钮来禁用父窗口

    我在jsp中设计了一个窗口 其中有一个搜索按钮 当用户单击 搜索 按钮时 会出现新窗口 但此时我希望我的父窗口被禁用 这样当用户尝试在父窗口上执行任何操作时 在 搜索 表单关闭之前 它不应该允许 如果有人知道如何执行此操作 请告诉我 我已经
  • MySQL 插入后和更新后触发

    我有两张表 其中一张名为att如下 CREATE TABLE att SID varchar 50 NOT NULL CID varchar 50 NOT NULL Date date NOT NULL H1 varchar 1 NOT N