반응형
다른 테이블을 참조하여 제약 조건을 확인
테이블이 세 개 있습니다.
Processor with columns Name and Socket.
Motherboard with columns Name and Socket.
Build with columns Processor[references Processor(Name)] and Motherboard[references Motherboard(Name)]
빌드에 입력할 프로세서와 마더보드의 소켓이 동일한지 확인해야 합니다.제약 조건 검사에서 다른 값을 참조할 수 없기 때문에 대안을 찾고 있습니다.UDF 또는 트리거를 사용할 수 있다는 것을 알고 있지만, 저는 초보자이기 때문에 몇 가지 예제 코드가 도움이 되었으면 합니다.
감사해요.
트리거가 필요하지 않습니다.외부 키 제약 조건을 사용하여 이 작업을 수행할 수 있습니다.
- 프로세서에서 이름과 소켓 두 열에 대한 고유 키를 추가합니다.
- 마더보드에 이름 및 소켓 두 열에 대한 고유 키를 추가합니다.
- 빌드에서 Foreign KEY가 두 열을 참조하도록 합니다.Build에 Socket이라고 하는 열을 하나만 제공합니다.두 외국어 키 모두에서 사용합니다.따라서 동일해야 합니다.
다음은 다음과 같습니다.
CREATE TABLE `Processor` (
`name` varchar(20) NOT NULL,
`socket` varchar(20) DEFAULT NULL,
PRIMARY KEY (`name`),
UNIQUE KEY `name` (`name`,`socket`)
);
CREATE TABLE `Motherboard` (
`name` varchar(20) NOT NULL,
`socket` varchar(20) DEFAULT NULL,
PRIMARY KEY (`name`),
UNIQUE KEY `name` (`name`,`socket`)
);
CREATE TABLE `Build` (
`Processor` varchar(20) DEFAULT NULL,
`Motherboard` varchar(20) DEFAULT NULL,
`Socket` varchar(20) DEFAULT NULL,
CONSTRAINT `build_ibfk_1` FOREIGN KEY (`Processor`, `Socket`)
REFERENCES `processor` (`name`, `socket`),
CONSTRAINT `build_ibfk_2` FOREIGN KEY (`Motherboard`, `Socket`)
REFERENCES `Motherboard` (`name`, `socket`)
);
이렇게 하면 원하는 비즈니스 규칙이 적용됩니다.외부 키는 다음을 요구합니다.Build.Socket
양쪽의 소켓을 참조합니다.Processor
그리고.Motherboard
의 값은 하나만 있을 수 있습니다.Build.Socket
의 일정한 열에.Build
따라서 소켓은 두 테이블에서 동일해야 합니다.
언급URL : https://stackoverflow.com/questions/58918195/check-constraint-referring-to-other-table
반응형
'programing' 카테고리의 다른 글
우리가 시뮬레이터에서 푸시 알림을 확인할 수 있습니까? (0) | 2023.08.24 |
---|---|
동의어가 이미 존재하는 경우 동의어를 만들지 않는지 확인하려면 어떻게 해야 합니까? (0) | 2023.08.24 |
업데이트 쿼리에서 최대 절전 모드를 사용하도록 강제하는 방법은 무엇입니까? (0) | 2023.08.24 |
엑셀 vba를 이용한 유튜브 자막 다운로드 (0) | 2023.08.24 |
DataTable을 클래스 Object로 변환하는 방법은 무엇입니까? (0) | 2023.08.24 |