Miałem dzisiaj nieprzyjemną przygodę. Otóż modyfikowałem pewien skrypt, w którym musiałem usuwać pewne rekordy w tabelce.
Tabelka 'users_privs' wygląda tak:
(int) user_id
(int) priv_id
Nie ma tam pola ID(autoincrement, primary), za to jest klucz primary postawiony na te dwie kolumy.
W tabelce są np. dane takie:
user_id:1
priv_id:7
I teraz, zapytanie:
delete from user_privs where user_id=1 and priv_id=7
Czasem działa, czasem nie.
Spędziłem z kumplem kupę czasu na to, nic nie działało, mimo, że testowaliśmy na różnych wersjach mysql.
W końcu zrobiliśmy coś, co teoretycznie nie powinno pomóc, a jednak pomogło. Zlikwidowaliśmy primary key na te dwie kolumny (user_id i priv_id), założyliśmy nowe pole ID (autoincrement, primary key) i wszystko zaczęło działać.
Testowaliśmy to na różnych wersjach mysql server, efekt ten sam.
Czy może mi ktoś wytłumaczyć o co tu chodzi?
Edit:
Widzę, że nikt się nie kwapi do odpowiedzi:)
To może inaczej: Czy ktoś z was miał podobną strukturę tabeli i miał/nie miał podobnych problemów? Czy w ogóle zdarza wam się robić tabelkę, gdzie nie ma id(primary key, autoincrement) a w zamian jest tabelka gdzie primary key jest tworzone na dwa pola?