2013-06-27 15 views
1

我一直在寻找一种方法来限制超类的记录参与其中的一个子类记录,我相信它被称为参与{强制OR}。我发现了一些关于如何使用CONSTRAINT CHECK的例子,但仅限于多重性。SQL-DBDL如何约束超类参与子类?

尽管我可以使用将要使用数据库的应用程序逻辑来防止这种情况,但我更喜欢使用数据库定义语言来设置约束。

有没有可能这样做?

下面我已经上传了一张图片,里面显示了我想要实现的内容,正如您在消息表中看到的,有一条消息与UserMessage和GroupMessage都不匹配。

enter image description here

回答

2

这不能做声明无推迟的外键,这MySQL不支持。

更多信息hereherehere

+0

换句话说,我必须依赖我的应用程序逻辑,对吧?谢谢。 – user9349193413

+0

@twimB是的,如果你留在MySQL。 –

+0

@twimB顺便说一句,我在更广泛的意义上使用了术语“应用程序逻辑”,其中包括触发器和存储过程。 –