我试图用调用者的主机/IP 填充表中的某个列。我在表上有一个插入触发器,它像这样设置列:
CREATE TRIGGER access_insert_trg BEFORE INSERT ON access
FOR EACH ROW
set NEW.hostname = (select SUBSTRING_INDEX(host,':',1)
from information_schema.processlist
WHERE ID=connection_id())
;
Run Code Online (Sandbox Code Playgroud)
%
尽管当我在processlist
表上手动运行相同的查询时,我得到了实际的主机名,但我最终还是得到了主机名。我已经检查了该connection_id()
值,它是在主机列中processlist
具有实际hostname:port
值的行的 id 正确。
我无法弄清楚它是如何或为什么被转换为通用%:<port>
值的。关于发生了什么以及如何解决它的任何想法?
如果有任何改变,我正在使用 MySQL 5.1.57。