teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

加筆修正

2017/05/17 10:12

投稿

退会済みユーザー
answer CHANGED
@@ -10,4 +10,12 @@
10
10
  大きい方の値を元に個々のpriorityの値に足しこんでupdate文しておきます。
11
11
  そのあと、フォーム入力されたpriority値を個々に適切にupdate文する流れです。
12
12
 
13
- もちろん、一連の流れはトランザクション処理の中で行います。
13
+ もちろん、一連の流れはトランザクション処理の中で行います。
14
+
15
+ ---
16
+
17
+ コメントいただいた方法だと、
18
+ 事前の値の振り直し基準値を求める手間が省けるし、
19
+ 仮の値を振るUPDATE文が1回で済んで速いというのもあります。
20
+
21
+ ![一旦負の値にしてからの例](737a7a53c61a89d3131372df2f5cf42b.png)

1

加筆修正

2017/05/17 10:11

投稿

退会済みユーザー
answer CHANGED
@@ -2,8 +2,12 @@
2
2
  更新処理を一括で行って途切れなくやるためには、
3
3
  事前に勝手にpriorityを仮の値で振り直せば良いのではないでしょうか。
4
4
 
5
+ ![更新の流れの例](760fa96babeef32fe9fe51336a502ae4.png)
6
+
5
7
  仮の値の考え方として、例えば
6
8
  priorityの最大値をselect文で取得し、
7
9
  フォーム入力されたpriorityパラメータの最大値とどちらが大きいか、
8
10
  大きい方の値を元に個々のpriorityの値に足しこんでupdate文しておきます。
9
- そのあと、フォーム入力されたpriority値を個々に適切にupdate文する流れです。
11
+ そのあと、フォーム入力されたpriority値を個々に適切にupdate文する流れです。
12
+
13
+ もちろん、一連の流れはトランザクション処理の中で行います。