我正在为 MySQL 数据库创建一个 php 脚本,我称之为 MySQL 触发器。
触发器应该影响实际上是发票的表:
因此,当我将一个名为“date_invoiced”的字段从其 NULL 默认值更新为有效日期时,它会
锁定整个记录以防更新,除非您通过 MySQL 登录
获得将其更改回默认 NULL 的权限,(有效地“重新打开'发票)
不知道怎么做,任何帮助都会很棒
添加触发器对于开发保留强制引用完整性的复杂 MySQL 数据库至关重要。外键无法处理可能涉及多于一列的复杂情况(例如 item_id 和 item_type_id 场景)。
仅在打开二进制日志记录时创建或删除触发器时才需要SUPER 。
原因似乎与复制问题有关(MySQL 5.0 文档)。
阅读此链接到...和此线程Applying column permissions for a table over a trigger , Can't create MySQL trigger with TRIGGER privilege on 5.1.32
你不能把锁放在一行上。我建议你使用TRIGGER
on update,如果 date_invoiced 是NOT NULL
. 除非用户名是“超人”。我认为你可以按照这个例子编写你想要的代码。
DELIMITER ||
CREATE TRIGGER upd_lock
BEFORE UPDATE
ON table_name
FOR EACH ROW
BEGIN
IF OLD.date_invoiced IS NOT NULL AND USER() NOT LIKE '\'superman\'@%' THEN
SIGNAL SQLSTATE VALUE '45000' SET MESSAGE_TEXT = '[upd_lock] - Record is locked';
END IF;
END;
||
DELIMITER ;