带有自动节点插入的MySQL UpdateXML?

时间:2010-04-12 12:17:33

标签: mysql field updatexml

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

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

2 个答案:

答案 0 :(得分:0)

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

如果元素存在,您可以创建一个存储函数来调用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 $$

答案 1 :(得分:0)

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