【问题标题】:MySQL: Creating Table with Calculated ConstraintMySQL:使用计算约束创建表
【发布时间】:2013-03-26 13:16:04
【问题描述】:

创建表时,是否可以根据两列的计算值声明约束?

这是解释我要做什么的伪代码:

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 sql key


【解决方案1】:

您最好的选择可能是在此处使用 TRIGGER - mysql 文档http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

使用来自How to abort INSERT operation in MySql trigger? 的信息应该会有所帮助

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;

【讨论】:

  • 一些有趣的东西。谢谢你。我会调查你提供的两个参考资料。
猜你喜欢
  • 2018-05-01
  • 1970-01-01
  • 2011-04-30
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 2019-07-01
  • 1970-01-01
  • 2014-02-26
相关资源
最近更新 更多