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

Скажите можно ли в 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
Можно ли в Liquibase описать внешние ключи без создания дополнительных таблиц
    #40009446
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vlad__i__mir
создаются доп таблицы:

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

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

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

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

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

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

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

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

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

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

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


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