0

根据一般的 SQL 数据库,我有一个问题:

假设,我有实体类型A(a_id: PK; ...)和。如您所见,最后一个是带有外键约束的连接表。B(b_id: PK; ...)AB(A_id: PK, FK; B_id: PK, FK; ...)

由于我有一个抽象层,它将每个实体和每个关系都视为“对象”(一个 RESTful 图形数据库),因此应平等对待以下语句(SQL 伪代码):

1.)

BEGIN;
    INSERT A;
    INSERT B;
    INSERT AB;
COMMIT;

2.)

BEGIN;
    INSERT A;
    INSERT AB;
    INSERT B;
COMMIT;

3.)

BEGIN;
    INSERT AB;
    INSERT A;
    INSERT B;
COMMIT;

当然,选项 1 应适用于每个 SQL DBMS。但是选项 2 和 3 是什么。这些语句是否有效(事务上下文)或者它们是否破坏了外键约束?

在第二种情况下(破坏的外键约束),是否有一种以正确顺序插入数据(如示例中所述)的通用方法?是否存在某种反射或类似的东西?

干杯。

4

0 回答 0