我的查询有问题。我有2个表与关系。
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
我的问题是,如果其中一个类别已经删除,如何设置类别名称。
发布于 2014-10-31 16:29:16
这里最重要的问题是关于业务逻辑。没有类别的订单有意义吗?如果是,则可以在删除类别时在orders
表中将categoryId
设置为null
。为此,您可以使用触发器。
然而,更好的解决方案是将enabled
列添加到您的类别中,而不是删除类别,只需将其enabled
设置为false
-这将使其不可用于进一步选择,但会保留以前的信息/关系。当然,这需要对选择用于表示的类别的位置进行小的更改,即向查询中添加where enabled=true
。
如果您在订单中将类别和设置类别ID设置为null,则您要查找的语法为
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 ;
https://stackoverflow.com/questions/26679205
复制