具有外键约束的数据库事务问题

时间:2013-10-23 14:09:21

标签: sql database foreign-keys

我根据SQL数据库提出了一个问题:

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

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

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是什么。这些语句是否有用(事务上下文)还是它们打破了外键约束?

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

干杯。

0 个答案:

没有答案