データベース テーブルを 1 つのレコードのみが所有できるように制限する制約を実装するにはどうすればよいですか特定の「isDefault」フィールド値が 1 ですか?この制約は、「FormID」フィールドで識別されるレコードのサブセットに適用されます。
SQL Server 2008 以降では、一意のフィルター処理されたインデックスを使用するソリューションが提供されます。インデックス:
CREATE UNIQUE INDEX IX_TableName_FormID_isDefault ON TableName(FormID) WHERE isDefault = 1
次の表を考えてみましょう。構造:
CREATE TABLE TableName( FormID INT NOT NULL, isDefault BIT NOT NULL )
同じ "FormID" および "isDefault" を 1 として複数のレコードを挿入すると、次のエラーが発生します:
Cannot insert duplicate key row in object 'dbo.TableName' with unique index 'IX_TableName_FormID_isDefault'. The duplicate key value is (1).
このエラーは制約を効果的に強制し、 「isDefault」を 1 に設定できるのは、「FormID」ごとに 1 つのレコードのみです。
(出典: https://technet.microsoft.com/en-us/library/cc280372.aspx)
以上がSQL Server テーブルの FormID ごとに isDefault = 1 を持つレコードが 1 つだけであることを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。