1

schedule_id という列を含むいくつかの列を持つ scheduler_sched というテーブルがあります。

パラメータとして 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

MySQLのバージョンを指定していないので、それが最新(5.4)であると想定します。

私があなたを正しく理解していると仮定すると、トリガーを使用してこれを実装できるはずです:http: //dev.mysql.com/doc/refman/5.4/en/create-trigger.html

トリガーを使用する利点の1つは、すべてがデータベース自体によって処理されることです。

于 2009-10-27T17:38:05.610 に答える
0

更新する代わりに、新しい行を挿入するだけです。その schedule_id 28 が存在する場合は最初に SELECT し、存在する場合は、それが ID である新しいものを挿入します。

于 2009-10-27T17:31:31.930 に答える