0

我正在编写一个支持自定义字段的应用程序。目前我将所有自定义字段存储在 XML 格式的文本字段中(例如'<root><field1>val1</field1><field2>val2</field2></root>'在 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 中?我正在考虑存储过程甚至存储函数,但对两者都不熟悉,谁能指出我正确的方向?

4

2 回答 2

0

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 $$
于 2010-04-12T21:12:41.837 回答
0

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

于 2010-04-20T20:57:01.710 回答