您好,我需要用户能够通过输入唯一的案例代码来注册对案例表中案例的访问权限。数据库需要检查案例代码是否存在,以及是否使用其 id 来查看用户是否已注册
cases
+----+-----------+-------------+
| id | case_code | case_name |
+----+-----------+-------------+
| 1 | THEC12C | Test Case 1 |
| 2 | ABCD23A | Test Case 2 |
+----+-----------+-------------+
case_creditors
+----+---------+-------------+
| id | case_id | creditor_id |
+----+---------+-------------+
| 1 | 1 | 3 |
| 2 | 2 | 1 |
+----+---------+-------------+
因此,如果债权人 1 尝试添加 THEC12C,它将向案例用户添加一条记录
case_creditors
+----+---------+-------------+
| id | case_id | creditor_id |
+----+---------+-------------+
| 1 | 1 | 3 |
| 2 | 2 | 1 |
| 3 | 1 | 1 |
+----+---------+-------------+
如果他们尝试再次添加相同的案例,它将返回一行,以便我可以告诉 php 该用户已经注册了此案例
我知道我可以使用两个查询来完成此任务 1) 案例代码是否存在于案例表中 - true/False 2) 如果为 true,case_creditors 中是否有记录 - true/false 3} 如果为 true,则“已注册;如果为 false,则将记录的 case_id 和 Creditor_id 添加到 case_creditors”
最佳答案
我会采取完全不同的方式。
创建单个 unique index在
case_creditors
表中的case_id
和creditor_id
字段上。这将防止插入重复记录。使用以下
insert ... select ...查询将数据插入
case_creditors`表中。
如果返回时出现重复键错误,则案例已分配给债权人。如果受影响的行为 0,则 case_code
不存在。如果受影响的行为 1,则案例分配给债权人:
insert into case_creditors (case_id, creditor_id)
select id, ... from cases where case_code='...'
用债权人 ID 代替第一个 ...
,用案例代码代替第二个 ...
。
关于MySQL IF Case Exists 检查用户是否已附加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43058639/