質問編集履歴

1

不具合現象について情報を追加。

2019/02/21 14:25

投稿

Take_it
Take_it

スコア357

test CHANGED
File without changes
test CHANGED
@@ -56,6 +56,8 @@
56
56
 
57
57
  regionには必ず整数値を入力します。
58
58
 
59
+ delはデフォルトでNULLです。該当レコードを使用しなくなった場合にフラグを立ててSELECT対象から除外するためのカラムです。
60
+
59
61
 
60
62
 
61
63
  このテーブルに対し、
@@ -104,6 +106,32 @@
104
106
 
105
107
  (班4を班1に書き換えることはregionが異なるのでOKですが、regionとnameがどちらも同じなのは困るのです)
106
108
 
109
+ また、新たにレコードを追加する場合も、name=班1、region=1が追加できてしまいます。
110
+
111
+
112
+
113
+ しかし、一度追加して、
114
+
115
+
116
+
117
+ (1, 1, ' 班1', 1, NULL),
118
+
119
+ (2, 2, '班2', 1, NULL),
120
+
121
+ (3, 3, '班3', 1, NULL),
122
+
123
+ (4, 4, '班4', 2, NULL);
124
+
125
+ (5, 5, ' 班1', 1, NULL),
126
+
127
+
128
+
129
+ この状態になってから更に name=班1、region=1 を追加しようとすると撥ねられます。
130
+
131
+
132
+
133
+ このことから、UNIQUEかどうかの検査対象からgroup_id=1のレコードが漏れていると思われます。
134
+
107
135
 
108
136
 
109
137
  編集前にPHPでデータを読み出して検査するなんていう強引な手法も考えましたが・・・そんなことしなくても、MySQL側で本来は解決できるはずですよね。。