私はすべての外部キーの制約を無効にしてから再度有効にしたいのですが、それを行うには何か方法がありますか?Firebird 2.1のテーブルのすべての制約を一時的に無効にするにはどうしたらいいですか?
私はSQLServerが許可していることを知っていますが、Firebirdはどうですか?
私はすべての外部キーの制約を無効にしてから再度有効にしたいのですが、それを行うには何か方法がありますか?Firebird 2.1のテーブルのすべての制約を一時的に無効にするにはどうしたらいいですか?
私はSQLServerが許可していることを知っていますが、Firebirdはどうですか?
AFAICTの外部キーは、Firebird 2.1まで無効にすることはできません。
削除して再作成する必要があります。
Devshedにはsimilar threadがあります。
私は唯一の方法はドロップして後でそれらを再作成することだと思います。制約はデータではないので、実際にはデータベースから情報を失うことはないため、無害な操作です(スクリプトを後で再作成する場合)。
バージョンFlameRobinのSVNリポジトリには、選択したテーブル列の依存関係に対して自動的にDROPスクリプトとCREATEスクリプトを生成するオプションがあります。前回の公式リリースではテーブル全体で同じオプションが使用されていました。ただし、データベース全体に対して実行するオプションはありません。多分他の管理者。ツールにその機能があります。
+1。システムテーブルを示すツールを使用すると、RDB $ RELATION_CONSTRAINTSに外部キー制約を無効にするフィールドがないことがわかります。索引OTOHは非アクティブにすることができ、RDB $ INDICESにはフィールドRDB $ INDEX_INACTIVEがあります。 – mghie
はい、制約をサポートするインデックスは無効にできません。そうしようとするとエラーになります。 –