MySQL IF Case Exsists检查用户是否已连接

时间:2017-03-28 00:26:13

标签: mysql sql

嗨我需要用户能够通过输入唯一的案例代码来注册案例表中的案例访问权限。数据库需要检查案例代码是否存在以及是否确实使用其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)case表中是否存在案例代码 - true / False 2)如果为true,则在case_creditors中有记录 - true / false 3} if true“已经注册if false add recored of case_id和creditor_id to case_creditors”

1 个答案:

答案 0 :(得分:0)

我会完全不同。

  1. case_id表格的creditor_idcase_creditors字段上创建一个unique index。这样可以防止插入重复记录。

  2. 使用以下insert ... select ... query to insert data into case_creditors表。

  3. 如果它返回重复键错误,则已将案例分配给债权人。如果受影响的行为0,则case_code不存在。如果受影响的行为1,则将案例分配给债权人:

    insert into case_creditors (case_id, creditor_id)
    select id, ... from cases where case_code='...'
    

    代替第一个...代替债权人ID,代替第二个...代替案例代码。