1

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

4

1 に答える 1