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 (および拡張により、任意の DB エンジン) がこの種のチェックを行う方法はありますか?