Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Primary key na dwóch kolumnach i problem z delete
konrados
post
Post #1





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

Ostrzeżenie: (0%)
-----


Witam,

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:
  1. 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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
a w zamian jest tabelka gdzie primary key jest tworzone na dwa pola?
Oczywiście że tak, jest to w miare normalna sytuacja. A to że ci nie chciał kasować to może były założone relacje które nie pozwalały na kasowanie akurat tego rekordu. Ciężko w ciemno zgadywać ale na 100% nie było tak, że raz działało a raz nie działało od widzimisie mysql.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 22:50