【发布时间】:2017-10-22 20:54:52
【问题描述】:
我正在使用 MySQL。
我有以下表格
User(UserID, UserTypeID, AccountID)
Account(AccountID, AccountTypeID)
Permission(PermissionID)
UserType(UserTypeID)
AccountType(AccountTypeID)
UserPermission(UserID, PermissionID)
PermissionRule(UserTypeID, AccountTypeID, PermissionID)
是否可以使用 SQL 约束来限制以下内容?
当权限插入UserPermission 表时,该用户的UserTypeID、该用户帐户的AccountTypeID 和插入的PermissionID 应该存在于PermissionRule 表中。
感觉这可能更适用于业务规则或过程/触发器,但想知道是否有任何方法可以限制使用我不知道的 SQL 约束。
我在 Hibernate 中使用 Spring Data。所以任何基于 spring 或 hibernate 注释的限制也是有用的。
【问题讨论】:
-
主键/外键约束将部分获得您想要的行为。你能从应用层处理这个逻辑吗?
-
我绝对可以在应用层做到这一点。但是想知道我们是否可以通过 SQL 做任何事情。特别是,当我在 PermissionRule 中删除一行时,我可能会喜欢从 UserPermission 中删除适用的条目。我想我可能必须为这种情况编写程序或触发器......
标签: mysql sql spring hibernate spring-data