Php 如何修复mysql列值一旦插入

Php 如何修复mysql列值一旦插入,php,mysql,sql,Php,Mysql,Sql,我正在开发一个用PHP编写的动态网站构建器应用程序,并寻找一种解决方案,在我将值插入mysql列后,将其中的一些值固定下来。固定意味着完全固定,以后在该列行中插入值后,没有人可以更新或更改该列值 任何想法都将不胜感激 谢谢 BlackBird Obscrite您可以尝试编写更新触发器,如果用户试图更改特定列的值,则会引发异常: CREATE TRIGGER upd_check BEFORE UPDATE ON yourTable FOR EACH ROW BEGIN IF NEW.amo

我正在开发一个用PHP编写的动态网站构建器应用程序,并寻找一种解决方案,在我将值插入mysql列后,将其中的一些值固定下来。固定意味着完全固定,以后在该列行中插入值后,没有人可以更新或更改该列值

任何想法都将不胜感激

谢谢


BlackBird Obscrite

您可以尝试编写更新触发器,如果用户试图更改特定列的值,则会引发异常:

CREATE TRIGGER upd_check BEFORE UPDATE ON yourTable
FOR EACH ROW
BEGIN
    IF NEW.amount <=> OLD.amount OR NEW.col2 <=> OLD.col2 THEN
        SIGNAL SQLSTATE '45000'
                SET MESSAGE_TEXT = 'Cannot update row: its read-only';
    END IF;
END;

那么您想在插入的行中锁定1列?您有两种可能:撤销用户的更新权限,或者编写触发器,在更新时引发异常(这允许您仅对特定列具有只读权限)我在下面尝试在表40上为每行更新前创建触发器upd_检查时,遇到了一个错误#1193-未知的系统变量'p#u status',如果NEW.type OLD.type开始,则设置p#u status='无法更新列:禁止';如果结束;结束@user3631236我更新了我的答案,现在应该可以了
REVOKE UPDATE ON schema.yourTable FROM 'user'@'localhost';