Skip to content

Cum să adaugi chei străine cu Liquibase

DodaTech Updated 2025-01-15 1 min read

In this tutorial, you'll learn about Cum să adaugi chei străine cu Liquibase. We cover key concepts, practical examples, and best practices.

Constrângerile de cheie străină (foreign key) asigură integritatea referențială între tabele. Liquibase oferă addForeignKeyConstraint pentru această operațiune.

Problema

Trebuie să definești relația dintre două tabele. O cheie străină asigură că valorile dintr-o coloană corespund înregistrărilor din tabela părinte.

Adăugarea unei chei străine

În XML:

<changeSet id="add-fk-orders-users" author="ionut">
    <addForeignKeyConstraint
        constraintName="fk_orders_users"
        baseTableName="orders"
        baseColumnNames="user_id"
        referencedTableName="users"
        referencedColumnNames="id"/>
    <rollback>
        <dropForeignKeyConstraint
            baseTableName="orders"
            constraintName="fk_orders_users"/>
    </rollback>
</changeSet>

În YAML:

- changeSet:
    id: add-fk-orders-users
    author: ionut
    changes:
      - addForeignKeyConstraint:
          constraintName: fk_orders_users
          baseTableName: orders
          baseColumnNames: user_id
          referencedTableName: users
          referencedColumnNames: id

Acțiuni ON DELETE/UPDATE

- addForeignKeyConstraint:
    constraintName: fk_orders_users
    baseTableName: orders
    baseColumnNames: user_id
    referencedTableName: users
    referencedColumnNames: id
    onDelete: CASCADE
    onUpdate: RESTRICT

Erori frecvente

  1. Tipuri diferite — coloanele trebuie să aibă același tip de date.
  2. Tabelă inexistentă — tabela referită trebuie să existe.
  3. Cheie duplicat — numele constrângerii trebuie să fie unic.
  4. Date orfane — înregistrările cu ID-uri care nu există în tabela părinte blochează crearea cheii.

FAQ

### Ce înseamnă ON DELETE CASCADE?

Când ștergi o înregistrare din tabela părinte, toate înregistrările asociate din tabela copil sunt șterse automat.

Pot avea chei străine pe coloane compuse?

Da, specifică mai multe coloane în baseColumnNames și referencedColumnNames.

Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. DodaTech tools integrate seamlessly with Liquibase for enhanced productivity and security.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro