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/