我有一个表aliases
,它将 8 字符 ID 映射到其他一些规范的 8 字符 ID。我希望数据库引擎确保没有循环。使用 SQLAlchemy,表描述为(略微简化):
Table('aliases', database,
Column('from', CHAR(8), primary_key = True),
Column('to', CHAR(8), nullable = False),
CheckConstraint('"to" not in (select "from" from aliases)')
)
这会生成以下 SQL:
CREATE TABLE aliases (
"from" CHAR(8) NOT NULL,
"to" CHAR(8) NOT NULL,
PRIMARY KEY ("from"),
CHECK ("to" not in (select "from" from aliases))
)
SQLite 与 窒息no such table: aliases
,这是有道理的,看看如何aliases
还不存在。SQLite(以及任何数据库引擎)有没有办法进行这种检查?