Вызов uuid()
вернет различные идентификаторы UUID, даже если они используются в одном запросе.
MariaDB [(none)]> SELECT uuid(), uuid();
+--------------------------------------+--------------------------------------+
| uuid() | uuid() |
+--------------------------------------+--------------------------------------+
| c6996867-e19c-11e8-b32e-e0cb4eeb0025 | c699686c-e19c-11e8-b32e-e0cb4eeb0025 |
+--------------------------------------+--------------------------------------+
Когда вы выполняете свои запросы, вы получите следующие операторы SQL:
INSERT INTO rate (id, pricing_model, name)
VALUES (uuid(), 'CPM', '20% off Discount US');
INSERT INTO rate_map (id, rate_map_name, rate_id)
VALUES (uuid(), 'general_20_discount_us', uuid())
, что приводит к трем различным UUID. Когда вы хотите «повторно использовать» значение, вы должны сохранить значение, а не вызов функции, внутри переменной / свойства и использовать вместо этого что-то вроде этого:
<property name="UUID-20-off-General-US" value="'c699686c-e19c-11e8-b32e-e0cb4eeb0025'" dbms="mysql"/>
<changeSet id="GeneralDiscountRateCard20" author="foo">
<sql dbms="mysql">
INSERT INTO rate (id, pricing_model, name)
VALUES (${UUID-20-off-General-US}, 'CPM', '20% off Discount US');
INSERT INTO rate_map (id, rate_map_name, rate_id)
VALUES (uuid(), 'general_20_discount_us', ${UUID-20-off-General-US})
</sql>
</changeSet>
Или вы не используете жесткий код <property />
и передаете вычисленное значение через Ant или командную строку.