回答編集履歴

1

追記

2017/06/01 01:28

投稿

yambejp
yambejp

スコア114883

test CHANGED
@@ -5,3 +5,65 @@
5
5
  それとも複数件UPDATE中に1件でも更新できないデータがあれば
6
6
 
7
7
  全部取り消したいのでしょうか?
8
+
9
+
10
+
11
+ # 確認
12
+
13
+
14
+
15
+ 具体的に以下の場合はどうするか指示ください
16
+
17
+ 仮にサンプルのテーブルが用意されているとして
18
+
19
+ ```SQL
20
+
21
+ CREATE TABLE tbl(id INT NOT NULL PRIMARY KEY,val INT);
22
+
23
+ INSERT INTO tbl VALUES(1,1),(2,2),(3,3);
24
+
25
+ ```
26
+
27
+
28
+
29
+ (1)存在しないidを指定された時
30
+
31
+ UPDATE tbl SET val=5 WHERE id=5;
32
+
33
+ 命題のとおりだとupdateされないので中止要件に入ります
34
+
35
+
36
+
37
+ (2)同じデータが2度出てくる時-パターン1
38
+
39
+ UPDATE tbl SET val=10 WHERE id=1;
40
+
41
+ としたあと、再度
42
+
43
+ UPDATE tbl SET val=10 WHERE id=1;
44
+
45
+ が実行された場合、2度めのupdateはされないので中止?
46
+
47
+
48
+
49
+ (3)同じデータが2度出てくる時-パターン2
50
+
51
+ UPDATE tbl SET val=20 WHERE id=2;
52
+
53
+ としたあと、元のデータである
54
+
55
+ UPDATE tbl SET val=2 WHERE id=2;
56
+
57
+ に戻すような処理がされた場合、本来なら中止されないが
58
+
59
+ 題意からするともともとid=2はval=2だったわけで、理論的には
60
+
61
+ 同じデータで更新がかかっている
62
+
63
+
64
+
65
+ また、そもそもユニークなidを使ってデータ更新している前提で話していますが
66
+
67
+ 実際にはユニークなキーを元に更新するとは一言も指定されていないため
68
+
69
+ 提示された仕様では回答のしようがありません