我有兩個表聲明如下:Liquibase - 插入行以uuid
<changeSet author="istvan" id="country-table-changelog">
<createTable tableName="country">
<column name="id" type="uuid">
<constraints nullable="false" unique="true" />
</column>
<column name="name" type="varchar">
<constraints nullable="false" unique="true" />
</column>
</createTable>
</changeSet>
<changeSet author="istvan" id="region-table-changelog">
<createTable tableName="region">
<column name="id" type="uuid" >
<constraints nullable="false" unique="true" />
</column>
<column name="country_id" type="uuid">
<constraints nullable="false" />
</column>
<column name="name" type="varchar">
<constraints nullable="false" unique="true" />
</column>
</createTable>
</changeSet>
<changeSet author="istvan" id="region-country-foreign-key-constraint">
<addForeignKeyConstraint
baseTableName="region"
baseColumnNames="country_id"
referencedTableName="country"
referencedColumnNames="id"
constraintName="fk_region_country"
onDelete="CASCADE"
onUpdate="RESTRICT"/>
</changeSet>
我想填補liquibase changelog文件這兩個表中包含一些值:
INSERT INTO country VALUES('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'HUNGARY');
INSERT INTO region VALUES('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'Baranya');
在這個例子中我僅僅因爲簡單就使用了aaaa和bbbb。我想通過DBMS生成這些UUID。
這樣做的最佳方法是什麼?我必須在我的更改日誌文件中使用SQL,還是使用XML?我更喜歡像XML或JSON這樣的DBMS獨立解決方案。
我的第二個問題是,我怎麼能與聲明UUID創建在插入的UUID列。例如:
<column name="id" type="uuid" value="??? GENERATE UUID ???">
<constraints nullable="false" unique="true" />
</column>
謝謝你的時間!
第一部分工作。它用'919d39e4-2387-4926-91d5-595ebe0eea07'的id來插入匈牙利。但是,對於第二次插入,它給出以下例外:'錯誤:插入或更新表「區域」違反了外鍵約束「fk_region_country」鍵(country_id)=(34e4e0d8-91d8-4d52-99ae-ec42d6b0e66e)不存在於表「國家」。使用外鍵很明顯,但我不知道如何在liquibase中使用它。下面是代碼使用:\t '<列名= 「COUNTRY_ID」 類型= 「$ {uuid_type}」 defaultValueComputed = 「$ {uuid_function}」> \t \t \t <約束可爲空= 「假」/> \t \t \t Thx –
@FarkasIstván - 我收到了同樣的錯誤。希望我能很快找到答案,但在此期間,如果你知道了,請告訴我。 – degreesightdc