【问题标题】:MySQL UpdateXML with automatic node inserting?具有自动节点插入功能的 MySQL UpdateXML?
【发布时间】:2010-04-21 04:57:01
【问题描述】:

我正在编写一个支持自定义字段的应用程序。目前我将所有自定义字段存储在 XML 格式的文本字段中(例如 '<root><field1>val1</field1><field2>val2</field2></root>' in cust_field)

我可以使用 updateXML(cust_field, '/root/field1', '<field1>new value</field1') 来更新这些值,但是如果我使用 updateXML(cust_field, '/root/field3', '<field3>new value</field3>') 那么它不起作用,因为 field3 不在旧值中。有没有办法让 MySQL 自动将新的 field3 节点及其值插入到 cust_field 中?我正在考虑存储过程甚至存储函数,但对两者都不熟悉,谁能指出我正确的方向?

【问题讨论】:

    标签: mysql field updatexml


    【解决方案1】:

    MySQL XML 函数不会自动执行此操作。

    如果元素存在,您可以创建一个存储函数来调用 UpdateXML(),否则使用您自己的逻辑添加元素。

    这是一个让您入门的基本模板:

    DELIMITER $$
    
    CREATE FUNCTION update_xml(xml_target text, xpath_expr text, new_xml text) returns text
    BEGIN
      DECLARE return_val text;
    
      IF (ExtractValue(xml_target,xpath_expr) != '')
      THEN
        RETURN updateXML(xml_target,xpath_expr,new_xml); 
      ELSE
        SET return_val := xml_target;
        -- add code here to insert the new element into your XML string
        RETURN return_val;
      END IF;
    
    END $$
    

    【讨论】:

      【解决方案2】:

      我实际上最终将逻辑放入了我的应用程序 sql 引擎中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-14
        相关资源
        最近更新 更多