我正在編寫一個小應用程序來管理菜單的元數據。 A Menu
附加到App
,並且(可選)附加到另一個Menu
(因此定義子菜單)。因此,接線如下所示:附加Menu.AppId
至App.Id
,然後Menu.ParentId
至Menu.Id
以定義子菜單。如何定義2列的遞歸外鍵
但是,這可以讓我插不連貫的數據:
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應當根據頂級菜單應用的#25 (另一個應用程序)。
有沒有一種方法,我可以定義一個約束,以確保當我插入子菜單爲頂級菜單的孩子,應用程序必須是#25(觸發器是不是一個選項)? (當然,我將在用戶界面中管理這一點,但我也在尋找一種保護模型的方法)。
謝謝
爲什麼觸發器不是一個選項? – HLGEM
@HLGEM我正在尋找RDBMS提供的內置功能,我可能錯過了。我想在使用觸發器之前瞭解所有可能的選項。 – Jeff