我正在编写支持自定义字段的应用程序。目前,我将所有自定义字段存储在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?我正在考虑存储过程甚至存储功能但不熟悉两者,有人能指出我正确的方向吗?
答案 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引擎中。