열의 제약 조건을 만들고 싶지만 데이터의 일부분에 대해서만 제약 조건을 만들려고합니다.열에 제약 조건을 만들지 만 데이터의 일부에만 적용하십시오.
상황은 다음과 같습니다. 우리는 모든 드롭 다운에 대한 모든 값을 하나의 테이블에 가지고 있습니다. 이들을 분리하기 위해 우리는 dropdowntype
이라는 판별자를 가지고 있습니다.
이제 제약 조건을 만들고 싶지만 dropdowntype
을 고려해야합니다.
제약 조건은 다음과 같습니다. dropdowns는 기본값을 가질 수 있습니다. dropdowntype 당 0 또는 하나의 레코드 만 허용되며 isdefault
의 값은 true
입니다.
따라서 isdefault
의 값이 true
인 레코드가 여러 개있을 수 있지만 모두 dropdowntype
에 대해 다른 값을 가져야합니다.
EDIT : 값이 false 인 주어진 dropdowntype
에는 여러 값이 허용됩니다.
이 작업을 수행 할 수 있습니까?
(보너스로 다른 nullable
열에 제약 조건을 넣고 해당 열의 모든 값이 null이거나 해당 값이 다시 주어진 값인 dropdowntype
인 경우입니다.하지만 첫 번째 질문이 대답 나는이 하나를 자신을 수행하는 방법을 알아낼거야)
테이블 :.
CREATE TABLE [dbo].[DropDownValues](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[CreateDate] [datetime] NOT NULL,
[IsActive] [bit] NOT NULL,
[IsDefaultValue] [bit] NOT NULL,
[Description] [nvarchar](1000) NULL,
[IsOtherItem] [bit] NOT NULL,
[Dropdowntype] [tinyint] NOT NULL,
CONSTRAINT [PK_ddv] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
아마도 필터링 된 고유 색인 :'DropDownValues (dropdowntype)에 고유 색인 작성 위치 IsDefaultValue = true ' –
문제점이 아직 해결되지 않았습니까? –
@TT. 나는 그것에 대해 연구 중이다. 나는 코멘트에있는 코드가 원하는 결과를 가지지 않을 것이라고 생각하여 질문을 편집했습니다. 나는 그것이 효과가 있다고 생각하지만, 나는 MS Sql이 문서가 왜 작동하는지 이해할 수없는 것 같습니다 ... – Michel