Oracle数据库中使用SQLAlchemy插入数据时Ancestor外键约束未生效问题
Oracle数据库中使用SQLAlchemy插入数据时Ancestor外键约束未生效问题
我创建了如下SQLAlchemy数据模型:
class AncestorTable(Base): __tablename__ = 'ancestor' id: Mapped[int] = mapped_column(primary_key=True) some_value: Mapped[float] parent: Mapped['ParentTable'] = relationship() class ParentTable(Base): __tablename__ = 'parent' id: Mapped[int] = mapped_column(primary_key=True) ancestor_id: Mapped[int] = mapped_column(ForeignKey('ancestor.id')) some_value: Mapped[float] tables: Mapped[List['Table']] = relationship() class Table(Base): __tablename__ = 'table' id: Mapped[int] = mapped_column(primary_key=True) ancestor_id: Mapped[int] = mapped_column(ForeignKey('ancestor.id')) parent_id: Mapped[int] = mapped_column(ForeignKey('parent.id')) some_value: Mapped[float]
这些对象会被插入到带有自增ID列的Oracle表中,插入代码如下:
with Session(engine) as session: session.add_all([responses]) session.commit()
目前祖先表和父表的插入流程正常工作,ID也能按预期生成,而且父表中的ancestor_id外键约束也能正确生效。但最后一个table表出现了问题:ancestor_id的外键约束没有被强制执行。整体来看,父级关系的外键约束都能正常应用,但祖先级关系的约束却不行。
以下是table表的数据情况:
| ID | ANCESTOR_ID | PARENT_ID | VALUE |
|---|---|---|---|
| 1 | (null) | 1 | 21 |
| 2 | (null) | 1 | 37 |
我已经尝试过手动生成序列,也直接在Column子句中定义了autoincrement,但这两种方法都没能解决问题。
备注:内容来源于stack exchange,提问作者Bartosz
相关产品推荐
相关产品推荐

