首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL在删除时设置默认字段值

MySQL在删除时设置默认字段值
EN

Stack Overflow用户
提问于 2014-11-01 00:24:18
回答 1查看 325关注 0票数 1

我的查询有问题。我有2个表与关系。

代码语言:javascript
复制
  table category
  CategoryId       name   
      1          category1
      2          category2


  table order
  orderId          CategoryId             date         Description
     1                 2               2014-10-10         okay
     2                 1               2014-10-10         okay2
     3                 1               2014-10-10         okay3

我的问题是,如果其中一个类别已经删除,如何设置类别名称。

EN

回答 1

Stack Overflow用户

发布于 2014-11-01 00:29:16

这里最重要的问题是关于业务逻辑。没有类别的订单有意义吗?如果是,则可以在删除类别时在orders表中将categoryId设置为null。为此,您可以使用触发器。

然而,更好的解决方案是将enabled列添加到您的类别中,而不是删除类别,只需将其enabled设置为false -这将使其不可用于进一步选择,但会保留以前的信息/关系。当然,这需要对选择用于表示的类别的位置进行小的更改,即向查询中添加where enabled=true

如果您在订单中将类别和设置类别ID设置为null,则您要查找的语法为

代码语言:javascript
复制
DELIMITER //

CREATE TRIGGER category_before_delete
BEFORE DELETE ON category FOR EACH ROW
BEGIN
   UPDATE `order` SET categoryid=null WHERE categoryid=OLD.categoryid;
END; //

DELIMITER ;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26679205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档