質問編集履歴
1
不具合現象について情報を追加。
title
CHANGED
File without changes
|
body
CHANGED
@@ -27,6 +27,7 @@
|
|
27
27
|
numは表示順を入れ替えることを想定して付与しています。必ず整数値です。
|
28
28
|
(上記の例で班3を班2の上に表示したい場合、班3のレコードのnumを2に、班2のレコードのnumを3に入れ替える)
|
29
29
|
regionには必ず整数値を入力します。
|
30
|
+
delはデフォルトでNULLです。該当レコードを使用しなくなった場合にフラグを立ててSELECT対象から除外するためのカラムです。
|
30
31
|
|
31
32
|
このテーブルに対し、
|
32
33
|
```MySQL
|
@@ -51,7 +52,20 @@
|
|
51
52
|
|
52
53
|
上記の状態から、班1を班2や3に書き換えることも、班2や3を班1に書き換えることもできてしまうのです。
|
53
54
|
(班4を班1に書き換えることはregionが異なるのでOKですが、regionとnameがどちらも同じなのは困るのです)
|
55
|
+
また、新たにレコードを追加する場合も、name=班1、region=1が追加できてしまいます。
|
54
56
|
|
57
|
+
しかし、一度追加して、
|
58
|
+
|
59
|
+
(1, 1, ' 班1', 1, NULL),
|
60
|
+
(2, 2, '班2', 1, NULL),
|
61
|
+
(3, 3, '班3', 1, NULL),
|
62
|
+
(4, 4, '班4', 2, NULL);
|
63
|
+
(5, 5, ' 班1', 1, NULL),
|
64
|
+
|
65
|
+
この状態になってから更に name=班1、region=1 を追加しようとすると撥ねられます。
|
66
|
+
|
67
|
+
このことから、UNIQUEかどうかの検査対象からgroup_id=1のレコードが漏れていると思われます。
|
68
|
+
|
55
69
|
編集前にPHPでデータを読み出して検査するなんていう強引な手法も考えましたが・・・そんなことしなくても、MySQL側で本来は解決できるはずですよね。。
|
56
70
|
|
57
71
|
解決策・何か試すべき方法その他、助言をいただければ幸いです。
|