2014-04-08 11 views
5

मैं <whereparams></whereparams> का उपयोग करने के तरीके पर एक उदाहरण ढूंढ रहा हूं जो <update></update> से संबंधित है, लेकिन मुझे कुछ भी नहीं मिला (यहां तक ​​कि आधिकारिक दस्तावेज़ीकरण में)।LiquiBase: का उपयोग <update> के अंदर कैसे करें?

किसी भी मदद की बहुत सराहना की है। धन्यवाद।

उत्तर

8

एक उदाहरण उपयोग

<update tableName="updateTest"> 
     <column name="varcharColumn" value="new column 1 value"/> 
     <column name="dateCol" valueDate="2008-01-01"/> 
     <column name="intCol" valueNumeric="11"/> 
     <where>id=:value</where> 
     <whereParams> 
      <param valueNumeric="134" /> 
     </whereParams> 
</update> 

वह जगह है जहाँ: मूल्य <where> ब्लॉक में बयान 'param' ब्लॉक में मानों के साथ प्रतिस्थापित किया गया है। यदि कई हैं: मूल्य विवरण वे खंड के भीतर क्रम में बदल दिए जाते हैं।

हालांकि, कोड को देखते हुए, ऐसा लगता है कि जहां पैराम का उपयोग नहीं किया जाता है या एकीकृत नहीं किया जाता है। शायद मुझे याद आ रही है कि इसे कहाँ उठाया जा रहा है, लेकिन यह ब्लॉब/क्लोब अपडेटिंग के बाहर भी काम नहीं कर रहा है।

इसे आज़माएं और देखें कि यह आपके लिए काम करता है, अन्यथा मैं मानक where ब्लॉक के साथ स्टिक कहूंगा जब तक कि समर्थन में सुधार न हो।

0

http://www.liquibase.org/documentation/changes/update.html पर दस्तावेज़ स्पैस हैं, लेकिन मूल रूप से इसमें एक SQL- जैसे खंड है। तो अगर आप सामान्य रूप से की तरह

UPDATE cat.person SET address = NULL WHERE id=12; 

कुछ करना होगा फिर अपने changeset इस प्रकार दिखाई देगा:

<changeSet author="liquibase-docs" id="update-example"> 
    <update catalogName="cat" 
      schemaName="public" 
      tableName="person"> 
     <column name="address" type="varchar(255)"/> 
     <where>id=12</where> 
    </update> 
</changeSet> 
+0

आपकी प्रतिक्रिया के लिए धन्यवाद, लेकिन मैं सोच रहा था कि के अंदर कैसे उपयोग करें? – user3488996

+0

इसके बारे में क्षमा करें - मुझे पहले भी के बारे में पता नहीं था। मुझे कुछ शोध करना होगा और देखें कि क्या मैं यह पता लगा सकता हूं कि क्या है। – SteveDonie

1

इस सुविधा के लिए समर्थन की कमी के बारे में नाथन की टिप्पणी के जवाब में, मैं पुष्टि कर सकता हूं कि यह संस्करण 3.3.2 में अच्छी तरह से काम कर रहा है। जब उन्होंने टिप्पणी की कि तरल पदार्थ संस्करण 3.1.1 पर था। शायद समर्थन 3.1.1 और 3.3.2 के बीच कहीं भी सुधार हुआ था, लेकिन परिवर्तन लॉग के माध्यम से त्वरित ब्राउज़ से मैं नहीं देखता कि यह कौन सा संस्करण होगा।

1

मैं @ नाथन-वॉक्सलैंड उत्तर का समर्थन करता हूं। लगता है कि वह तरल पदार्थ में बहुत अच्छा है।

लेकिन मैं हिस्सा एक और जहां/whereParams अतिरिक्त क्षमता के साथ उदाहरण (आप उपयोग कर सकते whereParams फ़ील्ड नाम भी के लिए ब्लॉक) हैं:

<where>:name=:value and :name=:value</where> 
<whereParams> 
    <param name="id" valueNumeric="21"/> 
    <param name="name" value="bob"/> 
</whereParams> 

मैं अपने उदाहरण का मानना ​​है कि अधिक स्पष्टीकरण की जरूरत नहीं है।

संबंधित मुद्दे