当数据库中添加新行时,必须调用外部命令行程序

2023-12-21

当向数据库中的一个表添加新行时,MySQL 数据库是否可以调用外部 exe 文件?

我需要监视数据库中的更改,因此当进行相关更改时,我需要在数据库之外执行一些批处理作业。


查德·伯奇(Chad Birch)有一个好主意,使用MySQL 触发器和用户定义函数 http://dev.mysql.com/doc/refman/6.0/en/faqs-triggers.html#qandaitem-23-5-1-10。您可以在以下位置了解更多信息MySQL CREATE TRIGGER 语法 http://dev.mysql.com/doc/refman/6.0/en/create-trigger.html参考。

但是您确定插入行后需要立即调用可执行文件吗?看起来该方法很容易失败,因为 MySQL 可能会同时生成可执行文件的多个实例。如果您的可执行文件失败,则不会记录哪些行已处理、哪些行尚未处理。如果 MySQL 正在等待可执行文件完成,则插入行可能会非常慢。另外,如果 Chad Birch 是对的,那么就必须重新编译 MySQL,所以这听起来很困难。

我不会直接从 MySQL 调用可执行文件,而是使用触发器来简单地记录行被插入或更新的事实:在数据库中记录该信息,可以使用现有表中的新列,也可以使用名为 say 的全新表database_changes。然后创建一个外部程序,定期从数据库中读取信息,对其进行处理,并将其标记为已完成。

您的具体解决方案将取决于外部程序实际需要的参数。

如果您的外部程序需要知道插入了哪一行,那么您的解决方案可能是这样的:创建一个名为database_changes有字段date, table_name, and row_id,对于所有其他表,创建如下触发器:

CREATE TRIGGER `my_trigger`
AFTER INSERT ON `table_name`
FOR EACH ROW BEGIN
  INSERT INTO `database_changes` (`date`, `table_name`, `row_id`)
  VALUES (NOW(), "table_name", NEW.id)
END;

然后你的批处理脚本可以执行如下操作:

  1. 选择database_changes 表中的第一行。
  2. 处理它。
  3. 去掉它。
  4. 重复1-3直到database_changes是空的。

通过这种方法,您可以更好地控制数据处理的时间和方式,并且您可以轻松检查数据是否实际得到处理(只需检查是否已处理)database_changes表是空的)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当数据库中添加新行时,必须调用外部命令行程序 的相关文章

随机推荐

  • Docker-Compose 上的 InfluxDB 无法读取 SSL 证书文件

    我在尝试使用在 Docker Compose 上运行的 InfluxDB v1 8 配置 SSL 时遇到一些问题 我跟着官方文档 https docs influxdata com influxdb v1 8 administration
  • Matlab:是否可以创建信号处理程序(.m 脚本)

    我查看了文档等 但没有看到任何明显的东西 我想要一个可以拦截的信号处理程序 C 或其他一些可用于中断长时间运行的脚本 每个离散计算通常 Matlab 确实有 COM 的事件处理程序 但它仅限于 Windows 而我处于 nix 环境中 如果
  • 在 AutoHotkey 中按住鼠标左键

    I want a script where pressing F1 makes AutoHotkey hold down the left mouse button I then want the script to release the
  • “事件驱动”和“面向对象”编程之间的关系是什么?

    如今 我几乎到处都听到 事件驱动 编程 维基百科说 在计算机编程中 事件驱动编程是一种编程范例 其中程序的流程由用户操作 鼠标单击 按键 传感器输出或来自其他程序 线程的消息等事件确定 事件驱动编程是图形用户界面和其他应用程序 例如 Jav
  • UIPicker 检测当前选定行上的点击

    我有一个UIPickerView和方法didSelectRow点击 a 时不会调用选定的行 我需要处理这个案子 有任何想法吗 首先 使类符合UIGestureRecognizerDelegate协议 然后 在视图设置中 UITapGestu
  • Python CSV 阅读器返回行作为列表

    我正在尝试使用 python 解析 CSV 并希望能够对一行中的项目进行索引 以便可以使用以下命令访问它们row 0 row 1 等等 到目前为止 这是我的代码 def get bitstats url http bitcoincharts
  • Swift 将数据从子视图发送到父视图控制器

    我正在开发一个应用程序 其中有一个视图控制器和子视图 在子视图上我正在加载谷歌地图 在主视图上我有一个标签 我的问题是如何将数据从子视图 地图地理位置 传递到主视图上的标签 并在使用 Swift 更新位置时更新该数据 我发现的所有教程都使用
  • 时间:2019-05-17 标签:c#progressbarnotupdate

    我有一个 ProgressBarWindow 它有一个进度条和一个取消按钮 我用它来报告文件 I O 的进度 然而 尽管所有工作都是在后台工作人员中完成的 但 ProgressBarWindow 的 UI 线程和我的主窗口都挂起 进度条已渲
  • 召回率和精确率后的分类准确率

    我只是想知道这是否是计算分类准确性的合法方法 获取精确召回阈值 对于每个阈值 对连续 y scores 进行二值化 从列联表 混淆矩阵 计算它们的准确性 返回阈值的平均准确度 recall precision thresholds prec
  • 复制构造函数和防御性复制

    什么是复制构造函数 有人可以分享一个有助于理解的小例子吗防御性复制原则 这是一个很好的例子 class Point final int x final int y Point int x int y this x x this y y Po
  • PHP Twitter API 分块上传问题:分段加起来不等于提供的总文件大小

    所以我将 Twitter API 集成到一个应用程序中 我需要它能够发布图像 视频和动画 GIF 我正在使用 php5 6 和 J7mbo twitter api php 包 到目前为止我的代码如下 file fopen realpath
  • 将文本项目符号添加到 C# 表单

    我正在用 C 创建一个表单 需要在表单上显示文本 我需要一些文本显示在带项目符号的无序列表中 使用标签时可以做到这一点吗 或者富文本框 我没有使用 ASP NET 这是针对桌面应用程序的 我的消息应该是这样的 要继续 请选择以下操作之一 单
  • IOError:[Errno 2]没有这样的文件或目录(当它确实存在时)Python [重复]

    这个问题在这里已经有答案了 我正在通过 python 中的 uart 传输文件文件夹 下面您可以看到简单的功能 但有一个问题 因为我收到如标题所示的错误 IOError Errno 2 No such file or directory 1
  • 在 EXCEL 中构建 SQL SELECT 语句

    我正在尝试在 Excel 中构建 SQL 语句 Sample 我正在尝试构建 sql 语句 但只想在 DIM 列中有值时添加列 因此 在 SQL 中执行时 SQL 看起来很整洁 没有任何语法错误 这里如何消除 from 关键字之前的多余逗号
  • 酿造更新破坏了什么?

    自制程序工作正常 直到我做了一个brew update 好几个月没有更新了 brew 更新完成后 每个brew命令会产生相同 相似的错误消息 usr local Library Homebrew global rb 6 in require
  • 两个菜单 Android 应用程序

    我工作的公司有一个 iOS 应用程序 它有两个滑动菜单 左侧一个用于导航 右侧一个显示应用程序范围的上下文信息和操作 iOS 应用程序有一个类似于 ActionBar 的小部件 在显示任一菜单时 意味着它是隐藏的 它会随主内容窗格一起滑动
  • TypeError:错误的参数类型类(预期模块)与控制器有关

    所以我有一个名为 guest controller rb 的控制器 如下所示 class GuestsController lt ApplicationController include Data def index display da
  • NSubstitute - 检查传递给方法的参数

    我们目前正在从 RhinoMocks 迁移到 NSubstitute 我有一个接受类型对象的方法DatabaseParams 该类具有以下结构 简化 public class DatabaseParams public string Sto
  • HTTP协议的PUT和DELETE及其在PHP中的使用

    介绍 我已阅读以下内容 超文本传输 协议 HTTP 是网络的生命 每次传输文档或发出 AJAX 请求时都会用到它 但令人惊讶的是 HTTP 在一些 Web 开发人员中相对陌生 HTTP 动词构成了 统一接口 约束的主要部分 并为我们提供了与
  • 当数据库中添加新行时,必须调用外部命令行程序

    当向数据库中的一个表添加新行时 MySQL 数据库是否可以调用外部 exe 文件 我需要监视数据库中的更改 因此当进行相关更改时 我需要在数据库之外执行一些批处理作业 查德 伯奇 Chad Birch 有一个好主意 使用MySQL 触发器和