Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不要让用户在MYSQL中更新列值_Mysql - Fatal编程技术网

不要让用户在MYSQL中更新列值

不要让用户在MYSQL中更新列值,mysql,Mysql,我试图基本上不让任何人更新MYSQL数据库中的行值。我尝试了使用触发器的简单逻辑。我在那个特定的表中创建了一个更新后的触发器,并将一个更新查询作为输出传递。(基本上,当有人更新该值时,触发器会将其更新回原来的值) 但看起来是一次失败的尝试。添加此触发器后,当我尝试更新该值时,它会闪烁一个错误,表示 #1442-无法更新存储函数/触发器中的表“wp_options”,因为调用此存储函数/触发器的语句已使用该表 遗憾的是,值被更新,触发器不工作 如何防止该特定行的更新 我试图基本上不让任何人更新MY

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

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

#1442-无法更新存储函数/触发器中的表“wp_options”,因为调用此存储函数/触发器的语句已使用该表

遗憾的是,值被更新,触发器不工作

如何防止该特定行的更新

我试图基本上不让任何人更新MYSQL数据库中的行值

创建触发器tr\u bu\u防止数据更改
更新前
关于表名
每行
开始
设置NEW.column1=OLD.column1;
--必须不更改的其他列
设置NEW.columnN=OLD.columnN;
结束
仅当某些列必须保持不变时应用

创建触发器tr\u bu\u防止数据更改
更新前
关于表名
每行
信号状态“45000”
SET MESSAGE_TEXT='table_name'中的数据不能更改!',
MYSQL_ERRNO=1105;

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

它的效果非常好!只是为了微调一下,我是否可以将其限制为一行?PFA屏幕截图我只是想阻止用户/程序更新黄色突出显示的行。谢谢截图:@SagarMistry我可以将此限制为一行吗?根据检查受影响行是否保持不变的IF语句添加,并且仅在检查成功时恢复更改/生成错误。请注意,如果查询更新了很多行,其中一行必须保持不变,则使用前一种方法-它将只恢复感兴趣的行更新,而后一种方法将使整个查询失败,并且不会更新任何行。