Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 触发一系列表,更新除最后一个表以外的所有表,最后一个表将与旧值一起更新_Php_Mysql_Database_Easyphp - Fatal编程技术网

Php 触发一系列表,更新除最后一个表以外的所有表,最后一个表将与旧值一起更新

Php 触发一系列表,更新除最后一个表以外的所有表,最后一个表将与旧值一起更新,php,mysql,database,easyphp,Php,Mysql,Database,Easyphp,我正在整理一系列相同的表,这些表只包含提交给DB的日期。执行特定作业的日期标记 这些表的工作原理类似于多米诺骨牌,因为当在更新表/表单中提交日期时,下一个表通过更新前触发器假定旧日期,依此类推 这些表中的每一个都可以从更新表链接,它们的目的是查看执行特定作业时所执行工作的历史记录。在20个左右的表之后,较旧的日期变得有些无关紧要,但最终都应该归档到最终的21个表中,该表包含所有不断更新的日期 最后一个表通过触发器更新,但应保留旧的日期/值,可以用逗号分隔。换句话说,虽然表1-20中每个字段只包含

我正在整理一系列相同的表,这些表只包含提交给DB的日期。执行特定作业的日期标记

这些表的工作原理类似于多米诺骨牌,因为当在更新表/表单中提交日期时,下一个表通过更新前触发器假定旧日期,依此类推

这些表中的每一个都可以从更新表链接,它们的目的是查看执行特定作业时所执行工作的历史记录。在20个左右的表之后,较旧的日期变得有些无关紧要,但最终都应该归档到最终的21个表中,该表包含所有不断更新的日期

最后一个表通过触发器更新,但应保留旧的日期/值,可以用逗号分隔。换句话说,虽然表1-20中每个字段只包含一个日期/条目,但上一个表中被覆盖的日期、表21将列出与该特定字段相关的所有已传递或将传递的日期,因此不会覆盖旧值

经过广泛的研究,我发现INSERT并没有覆盖旧数据,但每次尝试将INSERT写入最后一个表的触发器都失败了。所有表都具有相同的ID-“1”。没有创建新表,这是存储数据的一个简单练习,但最后一种方法是难以捉摸的

没有以前的答案,所以真的有帮助。如何做这个简单的工作? 对于所有其他表,有效的更新触发器(一个源自上一个SO问题)如下所示:

 BEGIN
  UPDATE work2 SET 
 ins1 = OLD.ins1,
 insp1 = OLD.insp1,
 b1psp = OLD.b1psp,
 b1ptp = OLD.b1ptp,
 ..........................etc
 WHERE work2.id = OLD.id; 
 END

必须有一个简单的解决方案,但我对PHP不够熟悉,无法解决这个问题。我使用的是EasyHP DevServer 14.1。

这听起来正是触发器名称如此糟糕的原因。我能够理解并欣赏将“历史”数据从表a归档到表a_历史的触发器,或将对表a的更改记录到另一个表中的触发器;但你为什么需要21层呢?!你的第一句话很可疑。一系列相同的表格通常表明存在数据建模问题。这是一项正在开发的工作。这正是我现在的处境。客户也可能会这样说,我会立即删除所有表2-20,但现在我只需要存储所有旧数据的方法,使用INSERT,当您有客户并且这是您的初始设计时,存储该数据的汇编?如果需要存储旧数据,为什么要(重新)将其从表中移动?也就是说,我找不到任何引用,我似乎记得(至少有一次)MySQL触发器只能导致其他触发器执行得如此“深入”;这是一个粗糙的解决方案,可以防止触发器执行链成为无限循环。。。但是我可能会考虑外键级联。我需要第一个可更新的表/表单。这是一个包含400多个字段的表,表上的日期并没有全部更改,表中表示最近执行的工作日期,第二个是前一个实例,等等..数据建模可能并不完美,但我认为你们都偏离了重点。我希望这能有所帮助。这听起来正是触发器名称如此糟糕的原因。我能够理解并欣赏将“历史”数据从表a归档到表a_历史的触发器,或将对表a的更改记录到另一个表中的触发器;但你为什么需要21层呢?!你的第一句话很可疑。一系列相同的表格通常表明存在数据建模问题。这是一项正在开发的工作。这正是我现在的处境。客户也可能会这样说,我会立即删除所有表2-20,但现在我只需要存储所有旧数据的方法,使用INSERT,当您有客户并且这是您的初始设计时,存储该数据的汇编?如果需要存储旧数据,为什么要(重新)将其从表中移动?也就是说,我找不到任何引用,我似乎记得(至少有一次)MySQL触发器只能导致其他触发器执行得如此“深入”;这是一个粗糙的解决方案,可以防止触发器执行链成为无限循环。。。但是我可能会考虑外键级联。我需要第一个可更新的表/表单。这是一个包含400多个字段的表,表上的日期并没有全部更改,表中表示最近执行的工作日期,第二个是前一个实例,等等..数据建模可能并不完美,但我认为你们都偏离了重点。我希望这有帮助。