php - 根据另一个表mysql的顺序动态更改表数据

标签 php mysql

mysql 新手,需要一些帮助!我有 2 个表 - 表 A 和表 B,其设置如下:

表 A - 事件

Event   | Date       |  Time
=====
1       | 2014-07-06 | 9am
2       | 2014-08-08 | 10am
3       | 2014-10-10 | 10am

表 B - 位置

Event   | Date       |  Description | Directions*
=====
1       | 2014-08-08 | Grand Canyon | bar
2       | 2014-10-06 | Devils Tower | foo
3       | 2014-07-06 | Pacific Park | foo
3       | 2014-07-06 | Universal Studios | foo

现在我遇到的麻烦是如何正确地重新排序或交换表 B 位置中的值。根据表A-事件。如何更新位置表以正确更改?

基本上我需要找到所有以前的事件值并用新的事件值更新它们。

这是表 B 的结果 - 当表 A 事件更改时我希望看到的位置。

表 B - 位置

Event | Date         |  Description | Directions
=====
1       | 2014-07-06 | Pacific Park | foo
1       | 2014-07-06 | Universal Studios | foo
2       | 2014-08-08 | Grand Canyon | bar
3       | 2014-10-06 | Devils Tower | foo

我忘了提及,我需要能够循环并找到所有实例。还有

最佳答案

如果您使用的是 InnoDB 存储引擎,则可以在外键约束定义上指定 ON UPDATE CASCADE 规则:

ALTER TABLE `location`
  ADD CONSTRAINT FK_location_event (event) REFERENCES event (event)
  ON UPDATE CASCADE;

然后(只要 session 中未禁用 FOREIGN_KEY_CHECKS),当您发出 UPDATE 语句来更改 event 表中 event 列的值时,location 表中的相关行也会被修改。

例如,如果您发出此声明:

UPDATE `event` SET `event` = 4 WHERE `event` = 1;

这大致相当于执行这两个语句:

UPDATE `event` SET `event` = 4 WHERE `event` = 1;
UPDATE `location` SET `event` = 4 WHERE `event` = 1;

关于php - 根据另一个表mysql的顺序动态更改表数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24375594/

相关文章:

php - 根据 WooCommerce 中的产品或类别隐藏特定运输选项

PHP PDO语句过滤记录

php - 使用表单上传文本和图像并将其存储在路径和数据库中

mysql - cakephp 执行类似 : where md5(column) = $hash 的查询

mysql - 在 Glassfish v3 中使用 jdbcrealm 授权时的表设计

php - SQL语法错误;检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行的 'WHERE id = ' 9'' 附近使用的正确语法

php - 使用 URL 字符串插入 MySQL

php - Mysql查询字段中匹配id

java - 第 1 行 ' ' x')' 附近的 SQL 语法错误(插入语句)

PHP:如何用键和值填充数组,以便 1 = 1、2 = 2、3 = 3 等