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

私は実際にロジックをアプリのSQLエンジンに入れることになりました。

于 2010-04-20T20:57:01.710 に答える
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 に答える