gpt4 book ai didi

mysql - 在 2 个不相关的表上使用 mysql 触发器

转载 作者:行者123 更新时间:2023-11-29 09:04:03 24 4
gpt4 key购买 nike

我需要创建一个用户事件日志,然后将其插入数据库中。为此,我正在考虑使用 mysql 触发器,而不是放置一个查询来对每个成功的查询执行此操作。这2张表根本没有关系。这是一个例子:

table_fruits

  • 水果名称
  • 味道

表日志

  • 用户 ID
  • 表名
  • 时间戳

表用户

  • 用户 ID

现在,每次我在表水果上插入时,将值插入 table_log 的触发器也会执行。我的问题是获取存储在另一个表中的用户 ID。如何确定要插入的用户 ID。据我所知,触发器不需要参数,所以我可能无法使用它来从我的脚本提供 id。有任何想法吗?我应该为此使用存储过程吗?

最佳答案

有 3 种方法:

  • 正如您所提到的,使用存储过程插入主表和日志表

  • 将用户 ID(由应用提供)存储为主(水果)表中的“inserted_by”列;然后让触发器填充日志表并从主表中读取用户

  • 让触发器自动找出用户 ID。这有两种风格:

    1. 用户 ID 存在于应用程序端,但不存在于数据库端(例如,用户登录到网页,但 CGI 后端代码始终作为特殊的“http”数据库​​用户连接到数据库)。

    2. 应用程序中的用户 ID 实际上作为同名数据库用户连接到数据库。

      在这种情况下,您应该使用 USER() (但NOT current_user() 而是返回创建触发器的人,或者更准确地说,返回用于触发器权限检查的 ID)

关于mysql - 在 2 个不相关的表上使用 mysql 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7624956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com