根据一般的 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 是什么。这些语句是否有效(事务上下文)或者它们是否破坏了外键约束?
在第二种情况下(破坏的外键约束),是否有一种以正确顺序插入数据(如示例中所述)的通用方法?是否存在某种反射或类似的东西?
干杯。