MySQL约束 - 一组中只有一列必须是非空的?

时间:2012-11-17 04:35:03

标签: mysql foreign-keys constraints

我有一个MySql(InnoDb)表,表示关于多种类型对象之一的注释。因为我正在使用Concrete Table Inheritance,所以我为每种类型的对象(商店,类别,项目)提供了不同的外键,如下所示。对于每条记录,必须只设置一个外键,其他两个必须为空。如何在MySql中指定此约束?

CREATE TABLE `tbl_comment` (
  `comment_id` bigint(20) NOT NULL AUTO_INCREMENT,  /* primary key */
  `_user_id` bigint(20) NOT NULL,   /* foreign key to user table - always set (NOT NULL) */

  `store_id` int(11) DEFAULT NULL,  /* foreign key to store table */
  `category_id` bigint(20) DEFAULT NULL,  /* foreign key to category table */
  `item_id` bigint(20) DEFAULT NULL,  /* foreign key to item table */
...

1 个答案:

答案 0 :(得分:0)

尝试添加以下触发器

CREATE TRIGGER on_insert AFTER INSERT ON `tbl_comment`
FOR EACH ROW
BEGIN
   SET NEW.category = NULL, NEW.item = NULL;
END;