我有三个桌子
Processor with columns Name and Socket.
Motherboard with columns Name and Socket.
Build with columns Processor[references Processor(Name)] and Motherboard[references Motherboard(Name)]
我需要确保输入到Build中的处理器和主板具有相同的插槽。 由于“检查约束”无法引用其他值,因此我正在寻找替代方法。 我知道您可以为此使用UDF或Triggers,但是我是初学者,并且需要一些示例代码来帮助我。
谢谢。
答案 0 :(得分:1)
不需要触发器。您可以使用外键约束来做到这一点。
是这样的:
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
值。
因此,两个表中的套接字必须相同。