gpt4 book ai didi

php - Mysql - 在重复键上插入不同的值

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:38 25 4
gpt4 key购买 nike

我有一个名为 history 的表,用于跟踪对另一个表所做的更改。基本思想是能够跟踪谁最后更新了特定条目。

当我第一次插入时,它将创建一个将操作字段显示为“上传”的条目。下次输入相同的 key 时,我需要它来创建一个新的历史记录,其中操作是“更新”,这样我就可以看到它是什么时候第一次创建的,以及谁在之后更新了该 key 。

不幸的是 ON DUPLICATE KEY INSERT... 不是 mysql 构造。我该怎么办?

到目前为止我有:

INSERT INTO history (key,userID,action,note,date)
VALUES (?,?,?,?,?)

*其中操作的值始终为“上传”,即使它是更新** 问号来自准备语句绑定(bind)

如果 key 存在于历史记录中,我需要将操作更改为“更新”并创建一个新条目 - 它永远不应该更改已经存在的条目。

最佳答案

  1. 你可以使用触发器

    CREATE TRIGGER catchHim BEFORE INSERT ON myTable
    FOR EACH ROW
    BEGIN
    IF EXISTS(SELECT * FROM myTable WHERE userID=NEW.userID) THEN
    INSERT INTO history (key,userID,action,note,date) VALUES (NEW.myColumn1, NEW.myColumnForUserId, .....);
    END IF;
    END;

但它们很难跟踪,尤其是没有人在 MySQL 上使用它们。

  1. 在进行更新之前,在 PHP 中实际验证该内容是否存在,然后决定是否插入历史记录。

关于php - Mysql - 在重复键上插入不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34668966/

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