MySQL的:与计算出的限制创建表(MySQL: Creating Table with Calcu

2019-08-18 00:59发布

在创建表时,是否有可能宣布基于两列的计算值的约束?

下面是伪代码解释什么是我想要做的事:

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)
)

基本上,用户被插入在任一企业层面或特许级注释。 每评论,任何一个可以留空,但至少有一个必须申报。

Answer 1:

最好的办法可能是使用触发器- 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;


文章来源: MySQL: Creating Table with Calculated Constraint
标签: mysql sql key