如果存在则更新其他创建复合键

时间:2017-06-14 10:52:47

标签: mysql relational-database knex.js bookshelf.js

我正在使用此表(MySQL表格),其中有4个字段(id, role_id, permission_id, status) ID是自动增量,对应于任何role_id permission_id永远不应该重复,即role_id = 1,permission_id应该是唯一的。

id | role_id | permission_id  | status
1  |     1   |       1        |   1
2  |     1   |       3        |   0
3  |     1   |       2        |   1
4  |     1   |       5        |   1
5  |     2   |       1        |   1
6  |     2   |       2        |   0
7  |     2   |       4        |   0
8  |     2   |       5        |   1

为了实现这个我特定的role_id对应的提取对象。 现在,如果我们对任何我希望它在数据库中更改的权限对应的状态进行任何更改,如果添加了任何新的权限ID,则该权限对应的该权限必须在单个查询中添加到数据库中。 例如 - :

id | role_id | permission_id  | status
.  |     .   |       .        |   .
2  |     1   |       3        |   1
3  |     1   |       2        |   0
.  |     .   |       .        |   .
.  |     .   |       .        |   .
9  |     1   |       4        |   1

for role_id = 1 permission_id(3,2)更新(切换)并创建4。

目前我使用3个查询来完成此任务。

如果表中存在权限但状态最初为false且稍后为真,则将状态从1更新为0

如果表中存在权限但状态最初为真,则将状态从0更新为1

如果不存在该权限,则第三个创建新行。

0 个答案:

没有答案