PHP,MySQL:重复一系列行,但更改1列?

PHP,MySQL:重复一系列行,但更改1列?,php,sql,mysql,php4,Php,Sql,Mysql,Php4,我有一个名为scheduler\u sched的表,它有几个列,包括一个名为schedule\u id的列 我需要一个函数,我可以传递2个id(从\u id复制\u,复制\u到\u id)作为参数。我需要做的是将schedule\u id=copy\u from\u id的每一行复制,但将copy\u from\u id更改为copy\u to\u id 所以基本上我想说的是,与此等价: UPDATE scheduler_sched SET schedule_id = 32 WHERE sche

我有一个名为scheduler\u sched的表,它有几个列,包括一个名为schedule\u id的列

我需要一个函数,我可以传递2个id(从\u id复制\u,复制\u到\u id)作为参数。我需要做的是将schedule\u id=copy\u from\u id的每一行复制,但将copy\u from\u id更改为copy\u to\u id

所以基本上我想说的是,与此等价:

UPDATE scheduler_sched SET schedule_id = 32 WHERE schedule_id = 28
只是我不想更新任何行,我想用新ID创建重复项

这有意义吗

我该怎么做

谢谢


(顺便说一句,schedule_id在此表中不是唯一的/索引字段)

只需插入新行,而不是更新。如果计划id 28存在,请选择first,如果存在,请插入一个新的计划id。

我认为重复密钥更新语法可能会帮助您:

e、 g:


因为您还没有指定MySQL的版本,所以我假设它是最新的(5.4)

假设我对您的理解正确,您应该能够使用触发器实现这一点:


使用触发器的好处之一是,它完全由数据库本身处理。

实际上我使用的是4.1.22,很抱歉没有指定
Insert into scheduler_sched (column1, column2, column3,schedule_id ) 
Select column1, column2, column3, 32 from scheduler_sched WHERE schedule_id = 28
Insert into scheduler_sched (column1, column2, column3,schedule_id ) 
Select column1, column2, column3, 32 from scheduler_sched WHERE schedule_id = 28