我正在使用触发器构建审计跟踪,并且希望将插入/更新/删除的值转换为 XML 并将其存储到另一个表中。
我的触发器如下所示:
DELIMITER $$
CREATE
TRIGGER `MyDB`.`TriggerAudit` AFTER INSERT
ON `MyDB`.`settings`
FOR EACH ROW BEGIN
INSERT INTO insert_audit_trail (user_uid, table_name, inserted_value)
VALUES ('the Username', 'the table name', 'Select to XML In Here')
END$$
DELIMITER ;
通常在 MSSQL 中我可以使用 FOR XML 函数,但在我不知道在 MySQL 中这样做。 有什么解决办法吗?
最佳答案
恐怕您无法通过普通查询来完成此操作,但您可以从 mysql 转储内容,从命令行提供对 XML 的查询,例如
shell> mysql --xml -uroot -e "SHOW VARIABLES LIKE 'version%'"
<?xml version="1.0"?>
<resultset statement="SHOW VARIABLES LIKE 'version%'" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<field name="Variable_name">version</field>
<field name="Value">5.0.40-debug</field>
</row>
参见http://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html#option_mysql_xml
与从触发器调用不同,我知道:-(
关于Mysql - 选择到 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214644/