我在当前架构为的应用程序中有一个表:
CREATE TABLE quotes
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
quote_request_id INT UNSIGNED NOT NULL,
quote_amount DECIMAL(12, 2) NOT NULL,
accepted TINYINT UNSIGNED NOT NULL DEFAULT 0,
FOREIGN KEY (quote_request_id) REFERENCES quote_requests(id)
) Engine=InnoDB;
我想强制执行一个约束,使得对于给定的报价请求只能接受一个报价 - 即,如果它尝试修改表以便两个或多个具有相同quote_request_id
值的行将具有accepted
值,则 UPDATE 或 INSERT 查询应该失败1.
这在 MySQL 中可能吗?强制执行约束,例如外键、除主键以外的列的唯一性等工作正常,我可以找到有关将 UNIQUE 约束应用于多个列的信息,但我找不到有关涉及多个列的更复杂约束的任何信息。