在创建表时,是否有可能宣布基于两列的计算值的约束?
下面是伪代码解释什么是我想要做的事:
CREATE TABLE employee_comments(
id int(11),
user_id int(11),
franchise_branch_id int(11) default 0,
corporate_branch_id int(11) default 0,
primary key id,
key corp_xor_franch(corporate_branch_id + franchise_branch_id > 0)
)
基本上,用户被插入在任一企业层面或特许级注释。 每评论,任何一个可以留空,但至少有一个必须申报。
最好的办法可能是使用触发器- MySQL文档这里http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
利用从信息如何中止在MySQL触发INSERT操作? 像这样的例子应该帮助
CREATE TRIGGER checkFieldsValid
BEFORE INSERT ON employee_comments
FOR EACH ROW BEGIN
DECLARE errmsg VARCHAR(255) DEFAULT "REQUIRED DATA NOT FOUND";
IF NOT NEW.franchise_branch_id = 0 XOR NEW.corporate_branch_id = 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = errmsg;
END IF;
END;