我有一个名为scheduler_sched的表,它有几列,包括一个名为schedule_id的列。
我需要一个函数,我可以传递2个ID(copy_from_id,copy_to_id)作为参数。我需要做的是将每行调用schedule_id = copy_from_id并复制它,但将copy_from_id更改为copy_to_id
所以基本上我想要相当于这个:
UPDATE scheduler_sched SET schedule_id = 32 WHERE schedule_id = 28
只有我不想更新任何行,我想创建带有新ID的副本
这有意义吗?
我该怎么做?
谢谢!
(顺便说一句,schedule_id不是此表中的唯一/索引字段)
答案 0 :(得分:2)
Insert into scheduler_sched (column1, column2, column3,schedule_id )
Select column1, column2, column3, 32 from scheduler_sched WHERE schedule_id = 28
答案 1 :(得分:1)
我认为ON DUPLICATE KEY UPDATE语法可以帮助你:
http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html
e.g:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
答案 2 :(得分:0)
只需插入新行而不是更新。如果schedule_id 28存在,则首先选择SELECT,如果存在,则插入一个新的,其中包含ID。
答案 3 :(得分:0)
由于您尚未指定MySQL的版本,我将假设它是最新的(5.4)。
假设我正确理解你,你应该能够使用触发器实现这一点:http://dev.mysql.com/doc/refman/5.4/en/create-trigger.html
使用触发器的一个好处是它全部由数据库本身处理。