Я две таблицы объявлены следующим образом: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 журнала изменений файла с некоторыми значениями, как:
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');
В примере I использовал aaaa и bbbb только из-за простоты. Я хочу сгенерировать эти UUID с помощью СУБД.
Каков наилучший способ сделать это? Должен ли я использовать SQL в моих файлах изменений или это возможно с XML? Я предпочитаю независимое от СУБД решение, такое как XML или JSON.
Мой второй вопрос заключается в том, как я могу объявить столбец с UUID, который создает UUID для вставки. Что-то вроде:
<column name="id" type="uuid" value="??? GENERATE UUID ???">
<constraints nullable="false" unique="true" />
</column>
Благодарим вас за внимание!
Первая часть работает. Он вставляет Венгрию с идентификатором '919d39e4-2387-4926-91d5-595ebe0eea07'. Однако для второй вставки это дает следующее исключение: «ОШИБКА: вставка или обновление в таблице« область »нарушает ограничение внешнего ключа« fk_region_country »Ключ (country_id) = (34e4e0d8-91d8-4d52-99ae-ec42d6b0e66e) отсутствует в таблица «страна». Использование внешнего ключа ясен, но я не знаю, как работать с ним в ликбазе. Вот код я использую: \t '<имя столбца = типа "country_id"= "$ {uuid_type}" defaultValueComputed = "$ {uuid_function}"> \t \t \t <ограничения обнуляемым = "ложь"/> \t \t \t 'Thx –
@ FarkasIstván - Я получаю ту же ошибку. Надеюсь, я скоро найду ответ, но пока, если вы это выяснили, сообщите мне. – degreesightdc