gpt4 book ai didi

oracle - 如何在liquibase中添加复合外键?

转载 作者:行者123 更新时间:2023-12-03 23:15:09 25 4
gpt4 key购买 nike

我一直在努力寻找一种方法来创建 liquibase 中的复合外键 .

我有一张 table 一个 它有一个复合 PK,比方说( id1, id2 )。我正在尝试制作另一张 table ,其中 A.PK 被映射为 FK .

我正在将 liquibase 与 YAML 一起使用,但似乎没有什么结果。

我尝试在创建表时添加 FK(所以在列标记中)

- column:
name: id1_id2
type: int
constraints:
nullable: false
foreignKeyName: fk_id1_id2
references: A(id1, id2)

不幸的是,此语法返回错误:
Caused by: java.sql.SQLSyntaxErrorException: ORA-02256: number of referencing columns must match referenced columns

我尝试过的另一件事是首先创建表,使用所需 FK 的列并尝试在该列上添加 FK 约束。这不会引发任何错误,但它什么也不做(LB 的日志也在描述中说“空”)
changes:
- addForeignKeyContraint:
baseColumnNames: id1, id2
baseTableName: B
constraintName: fb_id1_id2
referencedColumnNames: id1, id2
referencedTableName: A

任何帮助将非常感激。

谢谢

最佳答案

我不使用 Liquibase,但就 Oracle 而言,它应该是这样的:如果你想创建一个复合外键(在明细表中),那么它必须引用一个复合主键(在主表中)。

看看这个例子:

SQL> create table master
2 (id_1 number,
3 id_2 number,
4 constraint pk_mas primary key (id_1, id_2));

Table created.

SQL> create table detail
2 (id_det number constraint pk_det primary key,
3 --
4 id_1 number,
5 id_2 number,
6 constraint fk_det_mas foreign key (id_1, id_2) references master (id_1, id_2));

Table created.

SQL>

否则就行不通;这就是为什么你得到错误

ORA-02256: number of referencing columns must match referenced columns



因为您的详细信息表包含单列( id1_id2 )并尝试引用表 A 中的两列( id1id2 )。

关于oracle - 如何在liquibase中添加复合外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52401036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com