【发布时间】:2015-07-16 15:57:24
【问题描述】:
我有一种情况,只有当传入的参数在表中没有完全匹配时,我才需要插入记录。 例如, 我有一个角色和一个权限表:
Role:
-------
R1
R2
R3
Permission:
-----------
P1
P2
P3
然后有一个 Role_Perm 表:
Role|Permission:
----------------
R1 | P1
R2 | P1
R2 | P2
R2 | P3
R3 | P1
R3 | P3
现在手头的问题是我想在 Role_Perm 表中插入一条新记录,而表中尚不存在权限的确切组合(为新角色提供); 例如。 'R5 | P1, P2' 应该被插入,但 'R5 |不应插入 P1、P3'。
我想在执行插入操作之前使用 sql 查询来查找此组合是否已存在。我需要查询方面的帮助。非常感谢任何帮助。
【问题讨论】:
-
您是否有权更改您的表结构?特别是对于 Role_Perimission。您应该将其用作多对多关系的桥接表。
-
Role_perm 表未规范化。您需要将其设为查找表。
-
公平地说,连接(多对多)表本身并不能解决 OP 的实际问题。
-
首先,这是很糟糕的
normalized数据库。您可能想了解如何正确规范化数据结构,以便正确访问和操作数据。Permission在 role_perm 中的顺序是给定的还是也可以是P2, P1? -
感谢大家的回复,我已经在上面进行了更改以表示实际结构,它是实际的规范化表格