1

web2py で従来の sqlite データベースを使用しようとしています。データベースは現在他のいくつかのアプリで使用されているため、スキーマを変更できません。

私の問題は、db テーブルには次のような要件があることです: TableC には TableB が必要で、TableB には TableA が必要で、TableA には Table C が必要です。

もちろん、必要なテーブルがまだ定義されていない場合はエラーが発生します。最初に TableC の一部を定義してから、後で db.py でテーブルを変更して他の列を追加しようと考えました。これは機能しますか?もしそうなら、どうすれば db.py コードのテーブルを変更できますか?

誰かがうまくいくかもしれない他のアイデアを持っていますか?

4

1 に答える 1

0

ウィキペディアから ( http://en.wikipedia.org/wiki/Circular_reference ) 「Oracle や SQL Server などのほとんどのリレーショナル データベースでは循環参照が許可されていません。これは、別の行への依存関係を持つテーブルから行を削除するときに常に問題が発生するためです。削除される行を参照する別のテーブル (外部キー) から。」

Web2py は、データベース レベルでの循環参照を許可しません。これは、同じ理由からです (自己参照は許可されます)。通常、循環参照を試みる場合は、リンク テーブルを介した多対多の関係が必要です。

ともかく。回避策があります。最後の参照フィールドと整数を作成し、db レベルではなく web2py レベル (IS_IN_DB) で参照を強制します。

于 2010-06-25T06:35:07.180 に答える