sql >> データベース >  >> RDS >> Sqlserver

SQLServerでの延期可能な制約

    OT:SQL Serverがサポートしていないものがかなりありますが、エンタープライズ環境では意味があります:

    • ここで述べた延期可能な制約
    • MARS:完全に自然なものにオプションを設定する必要があるのはなぜですか?
    • CASCADE DELETE制約:SQL Serverは、特定のCASCADEDELETE制約に対して単一のカスケードパスのみを許可します。繰り返しになりますが、複数の可能なパスを介して削除時にカスケードすることを許可しない理由はわかりません。最終的に、実際に実行されるとき、実際に使用されるパスは常に1つだけなので、なぜですか。この制限はありますか?
    • 単一のADO.NET接続での並列トランザクションの防止。
    • このトランザクション内で実行されるトランザクションがある接続で実行されるすべてのコマンドを強制します。
    • UNIQUEインデックスを作成する場合、NULLは実際の値であるかのように扱われ、インデックスに1回だけ表示されます。ただし、SQLの「不明な値」としてのNULLの概念は、インデックスの作成時にNULL値が完全に無視されることを示しています...

    これらすべての小さなことにより、フルサイズのRDBMSに期待される参照整合性とトランザクション機能の多くがSQLServerではほとんど役に立たなくなります。たとえば、延期可能な制約はサポートされていないため、外部的に一貫性のある作業単位としての「トランザクション」の概念は部分的に否定されます。唯一の実行可能な解決策は、いくつかの汚い回避策を除いて、参照整合性制約をまったく定義しないことです。トランザクションの自然な動作は、トランザクション内で好きな方法と順序で作業できることであり、システムは、トランザクションをコミットするときに一貫性があることを確認します。同様の問題は、制限から発生します。 ON DELETE CASCADEを使用した参照整合性制約は、1つの制約のみがオブジェクトのカスケード削除につながる可能性がある方法でのみ定義できます。これは実際にはほとんどの現実のシナリオに適合しません。



    1. テーブルをロックしているものを見つける方法は?

    2. Oracleデータベースにブール型はありますか?

    3. ネットワーク経由でOracleデータベースにアクセスする方法は?

    4. 2つのテーブルmysqlを結合する方法は?