Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли в Liquibase описать внешние ключи без создания дополнительных таблиц / 10 сообщений из 10, страница 1 из 1
17.10.2020, 13:37
    #40009437
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в Liquibase описать внешние ключи без создания дополнительных таблиц
Здравствуйте!

Скажите можно ли в Liquibase описать внешние ключи (Foregen key) без создания дополнительных таблиц?
Вот делаю вот так и создаются доп таблицы:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
<changeSet id="1.0.0" author="vs">
        <createTable tableName="users">
            <column name="Id_users" type="BIGINT" autoIncrement="true">
                <constraints primaryKey="true" nullable="false"/>
            </column>

            <column name="login" type="VARCHAR(100)">
                <constraints nullable="false" unique="true"/>
            </column>
            <column name="password" type="VARCHAR(1000)">
                <constraints nullable="false"/>
            </column>
            <column name="word_coder" type="VARCHAR(50)">
                <constraints nullable="false"/>
            </column>
            <column name="status" type="VARCHAR(25)" defaultValue="ACTIVE">
                <constraints nullable="false"/>
            </column>
            <column name="email" type="VARCHAR(256)">
                <constraints nullable="false" unique="true"/>
            </column>
            <column name="first_name" type="VARCHAR(100)">
                <constraints nullable="false"/>
            </column>
            <column name="last_name" type="VARCHAR(100)">
                <constraints nullable="false"/>
            </column>
            <column name="created" type="TIMESTAMP" defaultValue="CURRENT_TIMESTAMP()">
                <constraints nullable="false"/>
            </column>
            <column name="updated" type="TIMESTAMP" defaultValue="CURRENT_TIMESTAMP()">
                <constraints nullable="false"/>
            </column>

        </createTable>
    </changeSet>

    <changeSet id="1.0.1" author="vs">
        <createTable tableName="roles">
            <column name="id_roles" type="BIGINT" autoIncrement="true">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="VARCHAR(100)">
                <constraints nullable="false" unique="true"/>
            </column>
        </createTable>
    </changeSet>

    <changeSet id="1.0.2" author="vs">
        <createTable tableName="user_roles">
            <column name="id_user_roles" type="BIGINT" autoIncrement="true">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="user_id" type="BIGINT">
            </column>
            <column name="role_id" type="BIGINT">
            </column>
        </createTable>
    </changeSet>

<changeSet id="1.0.4" author="vs">
        <addForeignKeyConstraint baseColumnNames="user_id"
                                 baseTableName="user_roles"
                                 constraintName="fk_user_roles_user"
                                 onDelete="CASCADE"
                                 onUpdate="RESTRICT"
                                 referencedColumnNames="Id_users"
                                 referencedTableName="users"/>
    </changeSet>

    <changeSet id="1.0.5" author="vs">
        <addForeignKeyConstraint baseColumnNames="role_id"
                                 baseTableName="user_roles"
                                 constraintName="fk_user_roles_roles"
                                 onDelete="CASCADE"
                                 onUpdate="RESTRICT"
                                 referencedColumnNames="id_roles"
                                 referencedTableName="roles"/>
    </changeSet>



В оф доках указывается именно такой метод https://docs.liquibase.com/change-types/community/add-foreign-key-constraint.html
...
Рейтинг: 0 / 0
17.10.2020, 14:07
    #40009446
graycode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в Liquibase описать внешние ключи без создания дополнительных таблиц
Vlad__i__mir
создаются доп таблицы:

Какие из них по вашему мнению ненужные доп таблицы?
...
Рейтинг: 0 / 0
17.10.2020, 14:51
    #40009455
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в Liquibase описать внешние ключи без создания дополнительных таблиц
Автор что то путает. Liquibase создаёт автоматически только две служебные таблицы для трекинга версий и сессий.

Остальное 100% создаётся руками разработчика.

Возможно автор увидел служебные таблицы ORM hibernate для поддержки sequence и подумал что это создано liquibase?
...
Рейтинг: 0 / 0
17.10.2020, 16:56
    #40009482
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в Liquibase описать внешние ключи без создания дополнительных таблиц
graycode, mayton, те таблицы, которых не было бы, если бы создавалось с помощью обычного sql-скрипта
...
Рейтинг: 0 / 0
17.10.2020, 17:05
    #40009483
Tsyklop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в Liquibase описать внешние ключи без создания дополнительных таблиц
Vlad__i__mir
graycode, mayton, те таблицы, которых не было бы, если бы создавалось с помощью обычного sql-скрипта

Никак не убрать. Это служебные таблицы Liquibase-a. Это нормально.
...
Рейтинг: 0 / 0
17.10.2020, 17:06
    #40009485
Tsyklop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в Liquibase описать внешние ключи без создания дополнительных таблиц
Vlad__i__mir
graycode, mayton, те таблицы, которых не было бы, если бы создавалось с помощью обычного sql-скрипта

Хотя можно убрать - не используйте Liquibase и таблиц не будет.

В этих таблицах Liquibase хранит свои данные касательно изменений БД.
...
Рейтинг: 0 / 0
17.10.2020, 17:08
    #40009486
graycode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в Liquibase описать внешние ключи без создания дополнительных таблиц
Vlad__i__mir,

Служебная таблица, вот описание databasechangelog
...
Рейтинг: 0 / 0
17.10.2020, 17:14
    #40009489
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в Liquibase описать внешние ключи без создания дополнительных таблиц
Вторая таблица - databasechangeloglock предназначена для предотвращения "двойного" запуска
liquibase update в том случае когда первый сеанс обновления подвис или работает долго и в это
время второй разработчик вручную или используя CI средства (косвенно) запустил точно такой-же
процесс.
...
Рейтинг: 0 / 0
17.10.2020, 17:30
    #40009490
Vlad__i__mir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в Liquibase описать внешние ключи без создания дополнительных таблиц
mayton
Вторая таблица - databasechangeloglock предназначена для предотвращения "двойного" запуска
liquibase update в том случае когда первый сеанс обновления подвис или работает долго и в это
время второй разработчик вручную или используя CI средства (косвенно) запустил точно такой-же
процесс.

А если после успешного создания таблиц удалить их и не запускать повторно liquibase, бд нормально будет функционировать?
...
Рейтинг: 0 / 0
17.10.2020, 17:38
    #40009493
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли в Liquibase описать внешние ключи без создания дополнительных таблиц
Vlad__i__mir
mayton
Вторая таблица - databasechangeloglock предназначена для предотвращения "двойного" запуска
liquibase update в том случае когда первый сеанс обновления подвис или работает долго и в это
время второй разработчик вручную или используя CI средства (косвенно) запустил точно такой-же
процесс.

А если после успешного создания таблиц удалить их и не запускать повторно liquibase, бд нормально будет функционировать?

Я ценю твоё творческое любопытство. Помнишь анекдот про бензопилу и русских мужиков?

У комплекса liquibasе есть юзкейс. Если ты его не собираешся использовать - то просто не используй.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Можно ли в Liquibase описать внешние ключи без создания дополнительных таблиц / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]