1

我有一个名为 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 不是这个表上的唯一/索引字段)

4

4 回答 4

2
Insert into scheduler_sched (column1, column2, column3,schedule_id ) 
Select column1, column2, column3, 32 from scheduler_sched WHERE schedule_id = 28
于 2009-10-27T17:46:41.430 回答
1

我认为 ON DUPLICATE KEY UPDATE 语法可以帮助你:

http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

例如:

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;
于 2009-10-27T17:33:00.863 回答
0

只需插入新行而不是更新。如果 schedule_id 28 存在,则首先选择,如果存在,则插入一个新的,其 ID 为。

于 2009-10-27T17:31:31.930 回答
0

由于您没有指定 MySQL 的版本,我将假设它是最新的 (5.4)。

假设我对您的理解正确,您应该能够使用触发器来实现这一点:http: //dev.mysql.com/doc/refman/5.4/en/create-trigger.html

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

于 2009-10-27T17:38:05.610 回答