我试图基本上不让任何人更新MYSQL中的行值。我用触发器尝试了一个简单的逻辑。在该表中更新后,我创建了一个触发器,并将更新查询作为输出传递。(基本上,当某人更新该值时,触发器会将其更新回旧值)
但看起来是一次失败的尝试。在添加此触发器后,当我试图更新该值时,它会显示一个错误:
#1442 -无法更新存储函数/触发器中的表'wp_options‘,因为调用此存储函数/触发器的语句已经使用了它
不幸的是,该值被更新,触发器无法工作。
怎样才能防止这一特殊情况的发生?
发布于 2020-08-24 18:09:35
MYSQL基本上不允许任何人更新MYSQL中的行值。
CREATE TRIGGER tr_bu_prevent_data_change
BEFORE UPDATE
ON table_name
FOR EACH ROW
BEGIN
SET NEW.column1 = OLD.column1;
-- another columns which must be non-changed
SET NEW.columnN = OLD.columnN;
END仅当某些列必须保持不变时应用。
CREATE TRIGGER tr_bu_prevent_data_change
BEFORE UPDATE
ON table_name
FOR EACH ROW
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'The data in \'table_name\' cannot be altered!',
MYSQL_ERRNO = 1105;当任何数据更改尝试错误时应用。
https://stackoverflow.com/questions/63566222
复制相似问题