私はRDBMSの「外部キー制約を強制する」の目的を知っています。しかし、それが "いいえ"に設定されているときに何か利点はありますか?Sql Server:「外部キー制約を強制する」が「いいえ」に設定されていると、どのような利点がありますか?
答えて
通常の製造では、この設定はとなるべくをNO
に設定する必要があります。
しかし、あなたがデータベースを開発しているときや、データベースを再構築しているとき、大量の大量のデータを「サニタイズ」(クリーンアップ)する必要がある場合、外部キー制約をオフにして、「有効でない」データをテーブルにロードすることができます。もちろん、私が言ったように、あなたはその設定を長時間オフにしておかないといけません。データをクリーンアップし、FK制約に違反している行を削除するか、値を更新してください親行に一致するようにします。
「通常の」生産モードでは、この設定は決してNO
であってはいけませんが、特定のタスクでは、より簡単に作業を進めるのに役立ちます。慎重にそれを使用して、できるだけ早くFK制約をオンに戻してください!
ご連絡ありがとうございますが、たとえば、すべての定義済みのデータを説明するために、データを列に入力する状況があります。有効なデータが1,2,3の場合、それらのすべてを言うために-1を記入します。このような状況では、図の「外部キー制約の強制」をNOに設定する必要があります。右?それで本当に関係を作る必要がありますか? – odiseh
@odiseh:いいえ、あなたのケースでは、それはまったく有用な目的を果たしていないので、外部キーを完全に削除する方が良いでしょう。代わりに、CHECK制約を作成してデータ値を検証することができます。 – sqlvogel
+1のように言ってください。私が契約しているいくつかの企業では、この設定が常に乱用されています。一貫して問題につながる。存在するはずの外部キーがなくて追加したいときに中間ステップとして使用することがあると付け加えます。時には、すべての参照元アプリケーションが正しい順序で操作を実行しているとは確信していません。これにより、関係をすぐに定義したり、問題のアプリケーションをテストしたり、コードを検索したりできます。 –
私が知る限り、毎日の使用ではありません。私が外来キーをしばらくの間強制していない時は、データに問題があり、それを修正することが関係チェックによって犠牲にされた時です。
一括操作中に、パフォーマンスを向上させるために制約チェックが一時的に無視されます。
- 1. 外部キーの制約がない「キー」とは何ですか?
- 2. SQL Serverで外部キー制約を削除するにはどうすればよいですか?
- 3. SQLの外部キー制約
- 4. 外部キー制約が守られていません
- 5. SQL外部キー制約でリレーションシップが許可されていません
- 6. モルフォアには、mongodbのカーソルと外部キーと制約がありますか?
- 7. 外部キー制約
- 8. SQLite3は外部キー制約をサポートしていませんか?
- 9. SQLエラーの外部キー制約
- 10. postgresqlとDelete文が外部キー制約に違反しています
- 11. Entity Framework 4.1削除時にどの外部キー制約が違反されているかを知るには
- 12. 1:1外部キー制約
- 13. SQL Serverのテーブルに既にあるデータのプライマリ/外部キー制約を再確認するにはどうすればよいですか?
- 14. 外部キー制約を追加するとテーブルがロックされます
- 15. デバッグ外部キー制約エラー
- 16. SQL:制約の少なくとも一つを強制&&各キー
- 17. Nullable外部キー制約
- 18. SQLiteとSQLite Net Extensions - 外部キー制約はどこにありますか?
- 19. SQL Server 2005 + Entity Designer - 外部キーの制約エラー?
- 20. SQL Serverで外部キー制約を追加する際の問題はありますか?
- 21. 外部キーがNULLでない場合にのみ、2つのテーブル間で制約を定義するにはどうすればよいですか?
- 22. SQL Serverの外部キー "Delete Delete Null"制約が機能しません
- 23. CAKEPHPの外部キー制約 - デバッグで正しい値が表示される
- 24. C#:制約と外部キーをチェックしないLinqの更新
- 25. #1215は - あなたが<em>がキー</em>ではない何かに外部キー制約を追加しようとしている
- 26. Django MySQLどのように外部キーの制約を停止するには?
- 27. SQL:列のグループに単一の列のみが設定されているように強制する方法
- 28. JavaからSQLiteに外部キー制約を適用するにはどうすればよいですか?
- 29. テーブルに多数の(20 +以上の)外部キー制約がある場合、それは欠点ですか?
- 30. 制約を使用して列を更新しないSQL更新ステートメントで外部キー制約がチェックされますか?
2つのテーブルに同じ2つの主キーがあり、外部キー関係を作成する必要がある場合は、「外部キー制約を強制する」を「いいえ」に設定する必要があります。これはかなり混乱しているので、私は下のYouTubeのURLを与えている、あなたはこのビデオの最後の後に明らかになります。 https://www.youtube.com/watch?v=H7uGGg1BQ2Y –