我有一個表中的應用,其目前的架構是:涉及多個列的MySQL限制
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;
我要強制執行,使得只有一個報價可以針對給定的報價請求被接受的約束 - 即如果UPDATE或INSERT查詢嘗試修改表,使得具有相同quote_request_id
值的兩行或更多行的值將爲accepted
,則UPDATE或INSERT查詢應失敗。
這在MySQL中可能嗎?強制約束如外鍵,除主鍵以外的列的唯一性等工作正常,我可以找到有關將UNIQUE約束應用於多個列的信息,但我找不到有關涉及多個列的更復雜約束的任何信息。
我不認爲這有可能在MySQL中不恢復到觸發器,因爲MySQL不支持部分索引。 – 2012-07-13 09:55:03
嗯,這是相當令人沮喪,雖然有用的知道。你能否重新發表你的評論作爲答案,以便我可以接受它?謝謝。 – pwaring 2012-07-16 09:37:57