0

我正在使用触发器构建审计跟踪,并希望将插入/更新/删除的值转换为 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 中这样做。有什么解决方案吗?

4

1 回答 1

1

恐怕你不能从普通查询中做到这一点,但你可以从 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

与从触发器调用不同,我知道:-(

于 2014-03-06T04:17:22.940 回答