首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不要让用户更新MYSQL中的列值。

问不要让用户更新MYSQL中的列值。
EN

Stack Overflow用户
提问于 2020-08-24 17:52:38
回答 1查看 112关注 0票数 0

我试图基本上不让任何人更新MYSQL中的行值。我用触发器尝试了一个简单的逻辑。在该表中更新后,我创建了一个触发器,并将更新查询作为输出传递。(基本上,当某人更新该值时,触发器会将其更新回旧值)

但看起来是一次失败的尝试。在添加此触发器后,当我试图更新该值时,它会显示一个错误:

#1442 -无法更新存储函数/触发器中的表'wp_options‘,因为调用此存储函数/触发器的语句已经使用了它

不幸的是,该值被更新,触发器无法工作。

怎样才能防止这一特殊情况的发生?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-24 18:09:35

MYSQL基本上不允许任何人更新MYSQL中的行值。

代码语言:javascript
复制
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

仅当某些列必须保持不变时应用。

代码语言:javascript
复制
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;

当任何数据更改尝试错误时应用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63566222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档