के साथ Liquibase में पंक्तियों को अद्यतन करना मैंने पहले कभी Liquibase का उपयोग नहीं किया है और बस इस समस्या को हल करने का तरीका नहीं समझ सकता है। जिस परियोजना में मैंने हाल ही में शामिल किया है वह पुरानी परियोजना का रीमेक है, इसलिए हमें पुराने डेटाबेस के साथ रहना होगा, जिसमें एक बेहद डिज़ाइन किया गया स्कीमा है। डेटाबेस कोई विदेशी कुंजी बाधाओं का उपयोग नहीं करता है, इसलिए अभी भी प्रविष्टियां हैं जो एक प्रविष्टि को इंगित करती हैं जो अब मौजूद नहीं है। मेरे मामले में यह एक ऐसे बैंक में बैंक खाता है जिसके पास डेटाबेस में मौजूद नहीं है। जिस तरह से मेरी टीम ने इन समस्याओं को संभाला है, अब तक शून्य के साथ आईडी ओवरराइड कर रहा था। तो मूल रूप से जो मैं करने की कोशिश कर रहा हूं वह है कि सभी बैंक खाता आईडी न्यूल पर सेट करें, जब बैंक अस्तित्व में न हो। एसक्यूएल कोड मैं पूरा करने के लिए इस कार्य इस प्रकार है बनाया:एक जटिल WHERE कथन
UPDATE DOCTOR SET FK_BANKID = NULL WHERE FK_BANKID NOT IN (SELECT ID FROM BANK);
मैं एकीकृत करने के लिए है कि हमारे Liquibase changesets में ठीक बताया गया था, लेकिन मैं सिर्फ यह कैसे करना है पता नहीं कर सकते हैं।
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
<changeSet id="remove_fk_bankid" author="v7">
<update tableName="DOCTOR">
<column name="FK_BANKID" value="NULL" />
<where>FK_BANKID NOT IN (SELECT ID FROM BANK)</where>
</update>
</changeSet>
</databaseChangeLog>
Liquibase अद्यतन त्रुटियों के बिना चलाता है, लेकिन जब मैं बाद में डेटाबेस को देखो, कुछ भी नहीं बदला है: यह मैं अब तक क्या किया है है। क्या किसी के पास इस समस्या को हल करने के लिए मेरे लिए कोई संकेतक है?
ओह और जिस तरह से, हम एक Oracle 10g डेटाबेस का उपयोग कर रहे हैं कि अगर मदद करता है। – David