【问题标题】:Prevent update several column in a database row防止更新数据库行中的多个列
【发布时间】:2013-02-05 05:21:21
【问题描述】:

我想防止通过触发器更新数据库行mysql中的两列,例如我的表是mymy,它们两列是column1column2,行ID是11。如何在mysql触发器中运行?

我试了一下:

CREATE TRIGGER 'no_update' BEFORE INSERT ON 'mymy' 
FOR EACH ROW BEFORE UPDATE , then check if NEW.column1 != OLD.column1 OR NEW.column2 != OLD.column2 

我有错误:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用 在 'BEFORE UPDATE 附近,然后检查 NEW.id_relation != OLD.id_relation 或 NEW.active !在第 1 行

如何解决?

【问题讨论】:

  • 正在运行的更新两列的查询是什么?
  • 试一试,看看你走了多远。手册中有很多例子。
  • 您可以在 UPDATE 之前创建一个触发器,然后检查 NEW.column1 != OLD.column1 OR NEW.column2 != OLD.column2 ,引发应用程序错误,或通知用户
  • @TaylorGomez - 您已经获得了有关如何执行此操作的说明,而不是您可以复制和粘贴的 SQL 代码。该问题表明您对 SQL 和触发器语法有点熟悉。
  • 好吧,显然你自己编造的语法“然后检查...”是完全错误的。您不能像与人类一样仅与计算机交谈。在手册中查找正确的语法并重试。

标签: php mysql database phpmyadmin


【解决方案1】:

如果您真的不想更新 column1 和 column2 的值,那么您可以使用触发器将新值设置为旧值,从而永远不要更新它们 - 我相信这就是您正在寻找的为。

CREATE TRIGGER test_trigger BEFORE UPDATE ON mymy
FOR EACH ROW BEGIN
  SET NEW.column1 = OLD.column1, NEW.column2 = OLD.column2
END

【讨论】:

  • 什么是反对票? - 这不能为您的问题提供答案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多