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