테이블에 열을 하나의 'true' 값만 허용하고 다른 모든 행은 'false'여야 합니다.
MySQL에서는 데이터베이스 레벨에서 아래와 같은 제한을 둘 수 있습니까?
1. 특정 열은 'true' 또는 'false' 값만 가질 수 있습니다. 2. 그리고 정확히 하나의 행만 'true' 값을 가져야 합니까?
테이블에 부울 특성이 있는 대신 하나의 행을 포함하고 참이라고 간주되는 원래 테이블의 행을 가리키는 다른 테이블을 가질 수 있습니다.
True 값을 변경하는 것은 TrueRow 테이블에서 외부 키를 업데이트하는 것입니다.
MySQL에서 고유 인덱스는 다음을 무시합니다.NULL
가치.그래서 당신이 사용할 수 있는 약간의 해킹이 있습니다.
nullable을 추가하는 것을 고려해 볼 수 있습니다.bit
열(1 또는 0 값만 가질 수 있음):
ALTER TABLE mytable
ADD COLUMN `is_default` BIT NULL,
ADD UNIQUE INDEX `is_default_UNIQUE` (`is_default` ASC);
이때 한 행은 1(TRUE)이 될 수 있으며, TRUE인 다른 행을 추가하려고 하면 오류가 발생합니다.
1062: Duplicate entry '\x01' for key 'is_default_UNIQUE'
유일한 문제점은 모든 다른 행이 다음 행이어야 한다는 것입니다.NULL
또한 고유 값으로 간주되므로 false가 될 수 없습니다.
(이것은 실제로 인덱스를 사용하기 위한 것이 아닙니다.)
특정 열은 'true' 또는 'false' 값만 취할 수 있습니다.
열에 데이터 유형 사용
boolean
아니면tiny-int
2 그리고 정확히 하나의 행만 'true' 값을 가져야 합니까?
true로 설정한 열을 제외한 모든 행 열을 false로 업데이트하는 쿼리를 작성해야 합니다.
열의 데이터 유형을 "boolean"으로 설정한 다음 업데이트 시 항상 "true"가 될 행을 true로 설정하는 트리거 함수를 추가합니다.
언급URL : https://stackoverflow.com/questions/3228161/could-i-make-a-column-in-a-table-only-allows-one-true-value-and-all-other-rows
'programing' 카테고리의 다른 글
apk(.apk)와 앱 번들(.aab)의 차이 (0) | 2023.09.20 |
---|---|
입력 파일 오류가 없는 프록시 패스를 사용하여 Nginx로 하위 디렉토리에서 워드 프레스 (0) | 2023.09.20 |
WooCommerce에서 주문의 배송 방법을 검색하는 방법은? (0) | 2023.09.20 |
jQuery ajax 일반 오류 처리 및 경우에 따라 처리 (0) | 2023.09.20 |
JQuery를 사용하여 HTML 5 동영상 재생/일시정지 (0) | 2023.09.20 |