php - 防止不相关的mysql数据
问题描述
假设我有 2 个 php 脚本,它们从不同的页面(不同的 url)运行。看一看:
脚本 1:
<?php
// 15:43:00 - Connect to database.
// 15:43:00 - Mysql query: "SELECT user_data FROM users WHERE user_id = 5"
// 15:43:00 - sleep(5)
// 15:43:05 - Mysql query: "INSERT INTO another_table (table_user_data, table_user_id) VALUES ($user_data, 5)"
脚本 2:
<?php
// 15:43:03 - Connect to database.
// 15:43:03 - Mysql query: "DELETE FROM users WHERE user_id = 5"
我希望你看到时间。所以,我的问题是:
脚本 2 将等到脚本 1 成功执行,或者它将运行查询并删除用户?
如果它将删除用户,那么我应该如何将该行插入到表“another_table”中,因为 mysqlINSERT
语法不接受WHERE
子句?
解决方案
脚本 2 不会等待脚本 1 完成。它在编程中被称为竞争条件。
在 MySQL 中处理这种竞争条件,你可以添加一个外键来another_table.table_user_id
引用users.user_id
。在这种情况下,如果在任何给定时间表中都不存在,则插入another_table
将失败。user_id
users
推荐阅读
- r - ggplot2 中的 Summarise() 和 group_by() 似乎遗漏了我的数据框中的数据行
- plot - Grisu 未定义 - 朱莉娅
- spring-boot - 在生产中配置 flyway 的最佳实践
- python - 无论如何,streamlit 是否可以调用特定的反应组件?
- tf.keras - 标准 keras 模型的摘要不属于自定义模型
- excel - Excel 插件名称更改后如何重新注册?
- css - 防止滚动条溢出 - CSS
- html - 如何在jQuery中创建左右按钮来移动产品轮播?
- excel - 如果单元格范围等于另一个工作表中的单元格范围,则添加注释
- javascript - ES6 - 使用来自基类的参数调用回调