mysql - 保护数据库数据

标签 mysql database

目前我正在使用 MySQL 数据库。假设我有一些关于上个月的数据。当数据被验证后我想“锁定”它,所以当我的老板问我数据是否正确时,我可以回答是,因为我确定数据不会同时被更改。

有没有办法“锁定”数据行或单元格不被修改?我怎么能那样做?

最佳答案

Mysql innoDB 锁可能有效,但我认为不是永久性的(与事务相关)。自查here

我建议您在表格中添加一个额外的列,将其命名为 eg. 已验证,默认值为 0。然后,当验证每一行时,将 validated 值更改为 1。如果是这样,您可以添加一个触发器来检查当前表的更新。

delimiter $$
CREATE TRIGGER updateRestrictionOnMyTable
BEFORE UPDATE ON my_table
FOR EACH ROW 
BEGIN
    IF OLD.validated > 0  THEN
        SIGNAL SQLSTATE VALUE '99999'
        SET MESSAGE_TEXT = 'You cannot update validated rows';
    END IF;
END$$
delimiter ;

关于mysql - 保护数据库数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48642087/

相关文章:

mysql - 存在多个实例时如何仅返回列值的 1 个(特定)实例

MySQL数据库运行在内存中以加速查询的执行

mysql - 在数据库中存储媒体文件的最佳方式是什么?

database - 在没有密码且不使用 sudo -u postgres 的情况下运行 psql 和 pg_dump

php - 为什么某些 MySQL 字段现在需要默认值?

MySQL更新列,这是另一列中的值

mysql - 如何在SQL中执行动态if语句?

mysql - SQL:如果没有结束日期,则按开始日期排序

sql - 我可以使用哪种模式来容纳基于手动日期的数据条目?

mysql - 数据库可扩展性问题