Mysql blokada przy dodawaniu rekordu


(Sitemaster) #1

Jeszcze jeden problem mam.

Mam sobie tabele z polami:

id (autoincrement/primary key)

name (varchar)

desc (varchar)

Wiadomo że id się nie będzie powtarzał, ale name już może.

jak temu zapobiec?

przed dodaniem można by zapytanie skierować i jeśli nic nie zwróci ok

ale czy da się bez zapytania? na poziomie samej bazy?

A jeśli się da to jak obsłużyć zapytanie dodające rekord, by w tym konkretnym przypadku próby dublowania otrzymać konkretną informacje 'taki rekord już istnieje' ?


(Airborn) #2

możesz dodać do pól tabeli jeszcze zawężenie UNIQUE, które nie pzowala na powtarzanie się wartości w danej kolumnie. zapytanie INSERT powinno wówczas zwrócić wartość FALSE. więc możesz sprawdzić w ten sposób:

$query = "INSERT...";

$status = mysql_query($query);

if($status){

echo("Dodano rekord");

else{

echo("Nie można dodać rekordu");

}

musisz być tylko świadom tego, że FASLE może wystąpić nie tylko w przypadku istnienia rekordu, ale także w sytuacji gdy np. nie udało się wykonać zapytania (np. na skutek błędu bazy)


(Sitemaster) #3

Strasznie dziękuje, to mi wystarczy.