【发布时间】:2013-08-20 13:01:25
【问题描述】:
我正在编写一个小应用程序来管理菜单的元数据。一个Menu 附加到一个App,并且也(可选地)附加到另一个Menu(因此定义了一个子菜单)。所以接线是这样的:将Menu.AppId 附加到App.Id,然后将Menu.ParentId 附加到Menu.Id 以定义子菜单。
但这可以让我插入不连贯的数据:
INSERT INTO Menu (Id, ParentId, AppId, Desc) values (1, NULL, 25, 'Top Menu')
INSERT INTO Menu (Id, ParentId, AppId, Desc) values (2, 1, 36, 'Sub Menu')
这里我只是说#36应用的Sub Menu应该在#25应用的Top Menu之下>(另一个应用程序)。
有没有一种方法可以定义一个约束,以确保当我将 Sub Menu 作为 Top Menu 的子项插入时,应用程序必须是 #25(触发器不是一个选项)?
(当然我会在用户界面中管理这个,但我也在寻找一种方法来保护模型)。
谢谢,
【问题讨论】:
-
为什么不能选择触发器?
-
@HLGEM 我正在寻找我可能错过的 RDBMS 提供的内置功能。我想在使用触发器之前了解所有可能的选项。
标签: sql sql-server foreign-keys relational-database