내 테이블은 두 개의 열로 구성됩니다. A와 B는 둘 다 nullable이며 다른 테이블의 외래 키입니다. A 또는 B 중 적어도 하나가 null이 아니어야한다는 제약 조건을 어떻게 부과 할 수 있습니까?MySQL : 두 필드 중 적어도 하나에 대한 제약
2
A
답변
0
가능한 답변 : 더 나은 솔루션이있는 경우 의견을 주시기 바랍니다.
롤랜드 보먼의 this 솔루션을 찾았습니다.
delimiter go
create procedure validateAtLeastOneValue(
in a bigint(16), in b bigint(16)
)
deterministic
no sql
_main: begin
declare err_no value_specified condition for sqlstate '45000';
if a is not null then
leave _main; -- nothing to validate
end if;
if b is not null then
leave _main; -- nothing to validate
end if;
signal err_no_value_specified -- raise an error
set message_text = 'No value specified';
end;
go
delimiter ;
지금 테이블에 삽입 (또는 갱신)에 대한 이벤트 핸들러에서이 프로 시저를 호출 : 자신의 솔루션의 정신을 바탕으로, 여기에 내가 가진 것입니다.
create trigger on_before_insert
before insert on mytable
for each row
begin
call validateAtLeastOneType(
NEW.a
, NEW.b
);
end;
create trigger on_before_update
before update on mytable
for each row
begin
call validateAtLeastOneType(
NEW.a
, NEW.b
);
end;
0
관련 문제
- 1. 두 부모 중 하나에 대한 할당 연산자
- 2. SQL 제약 조건 "두 속성 중 적어도 하나"
- 3. 적어도 두 일치 필드 (MySQL의)
- 4. Elasticsearch 필드 제약 조건의 복수 필드 제약
- 5. Typo3 Formhandler : typoscript의 두 필드 중 적어도 하나를 확인하는 방법
- 6. django의 양식 필드 중 하나에 속성 추가
- 7. 클래스가 자신의 필드 중 하나에 액세스하지 못하도록하십시오.
- 8. '적어도 하나의 선택'유전 알고리즘 제약
- 9. Matlab regexp; 두 표현 중 하나에 대한 둘러보기
- 10. 두 가지 가능한 결과 중 하나에 대한 애셋
- 11. 두 부모 중 하나에 속하는 모델
- 12. 문제 중 하나에 대한 펄 코드 최적화?
- 13. RequiredFieldValidator를 사용하여 두 텍스트 상자 중 적어도 하나에 텍스트가 들어 있는지 확인하십시오.
- 14. MYSQL : 합집합을 사용하여 두 테이블을 하나에 병합
- 15. 적어도 하나의 필드
- 16. rspec - 선택자 중 하나에 대한 matcher
- 17. 요소 중 하나에 대한 Jsoup 선택자
- 18. 테이블 중 하나에 대한 데이터 세트 getxml
- 19. 내가 내 광고 중 하나에 대한
- 20. mysql 테이블에 대한 어려운 제약
- 21. 특정 필드 값이 0보다 큰 MySql 제약
- 22. mysql 제약 오류 처리
- 23. MySQL 제약 - 집합 중 정확히 하나의 열은 null이 아니어야합니다?
- 24. ASP.NET 컨트롤을 부모 컨트롤의 필드 중 하나에 바인딩하는 속성
- 25. 장고의 두 필드에 대한 제약
- 26. 체크 적어도 두 세 가지 논리 값 중 적어도 두 가지에 해당하는 경우에는
- 27. @PreUpdate OneToMany 중 하나에?
- 28. FluentValidation은 두 필드 중 하나가
- 29. 두 인터페이스를 구현하는 매개 변수에 대한 제약
- 30. MySQL 교차 테이블 제약
MySQL은 검사 제약 조건을 전혀 지원하지 않습니다. [문서에서] (http://dev.mysql.com/doc/refman/5.1/en/create-table.html) "CHECK 절은 구문 분석되지만 모든 저장소 엔진에서 무시됩니다." – Andomar
답변을 삭제 했으므로 MySQL을 사용하고 있다는 것을 깨닫지 못했습니다. – ClaireG
외래 키인 경우 nullable 기본 키가있는 다른 테이블이 있음을 의미합니까? 그건 맞지 않아. –