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

デフォルトとしてマークされた1つのレコードのみの制約

    一意のフィルター処理されたインデックスを使用する

    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に設定すると、次のエラーが発生します:

    重複するキー行を、uniqueindex'IX_TableName_FormID_isDefault'を持つオブジェクト'dbo.TableName'に挿入できません。重複するキー値は(1)です。

    ソース:http://technet.microsoft.com/en-us/library/cc280372.aspx



    1. 2つのテーブルを3番目のテーブルのFKと結合する必要があります

    2. エラーが発生したときにSQLPlusでスクリプトを終了し、SQLPlusを切断したり終了したりせずに、SQLPlusプロンプトに戻るにはどうすればよいですか?

    3. SQLServerデータベースの複数のテーブルの主キー制約の名前を変更する方法-SQLServer/TSQLチュートリアルパート64

    4. Java JDBCはsetFetchSizeを無視しますか?