gpt4 book ai didi

mysql - 在mysql中创建一个不可变字段

转载 作者:可可西里 更新时间:2023-11-01 07:18:28 29 4
gpt4 key购买 nike

我想创建一个 TIMESTAMP 字段 DEFAULT CURRENT_TIMESTAMP,用于“创建时间”目的。但是,如果有人或以某种方式更改了 TIMESTAMP,,我的数据将不一致。

除了应用程序级别之外,有什么方法可以确保它不会更改,除非我删除该行并重新插入它?


根据提供的建议答案,我可以解决类似这样的问题

CREATE TRIGGER consistency1 BEFORE UPDATE ON table1
FOR EACH ROW
BEGIN
IF NEW.creationtime != OLD.creationtime THEN
SET NEW.creationtime = OLD.creationtime;
END IF;
END;

最佳答案

由于我的评论受到赞赏,这里是扩展版本。

我个人认为这是不可能的。

无论如何,您可以尝试一些事情:

  1. 确保只有您的应用程序可以写入数据库

  2. 像这样写一个触发器(伪代码!)

    create trigger prevent_change_timestamp on tbl_name
    before update
    #fetch old row value
    #verify if the timestamp field has been changed
    #raise an error (any SQL error will do)
  3. 或者像这样

    create trigger revert_change_timestamp on tbl_name
    after update
    #fetch pre-change row value
    #update the row with the "old" value in place of the new one

如果可能的话,我个人会选择第三个选项。不管怎样,第2个也不错。除非必要,否则我不会依赖第一个选项(例如:无法访问触发器功能)

更多信息在这里:reference

关于mysql - 在mysql中创建一个不可变字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17424471/

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