78630 skanuj0294 (2)

78630 skanuj0294 (2)



308 PHP i MySQL dla każdego

Takie zachowanie jest zrozumiałe, gdyż chroni nas przed przypadkowym wprowadzeniem do bazy nieuprawnionych duplikatów kluczy i indeksów. Istnieje jednak instrukcja, która w razie próby wprowadzenia do tabeli nowego wiersza, zawierającego już istniejącą w tabeli wartość unikalnego klucza lub indeksu, zastąpi starą wartość wartością nową. Ściślej usunie stary rekord, a na jego miejsce wprowadzi nowy. Jest to więc odpowiednik dwóch ręcznie wykonanych operacji: DELETE i INSERT. Tą instrukcją jest REPLACE. Ma ona schematyczną postać:

REPLACE [INTO] tabela [(kolumnal. kolumna2.....kolumnaN)] VALUES (wartośćl.

wartość2.....wartośćN)

Jest to więc składnia analogiczna do instrukcji INSERT, REPLACE zachowuje się bowiem tak samo jak INSERT, z wyjątkiem sytuacji opisanej wyżej, czyli próby wprowadzeni zduplikowanego klucza lub indeksu. Jeśli zatem chcemy wykonać operację wprowadzenia do przykładowej tabeli OSOBA nowego wiersza zawierającego pole Id o wartości 1, który ma zastąpić już istniejący w tej tabeli wiersz, należałoby wykonać polecenie: REPLACE INTO Osoba VALUES(1. 'Jan'. 'Janowski'. 1990. 'Gliwice'):

Warto zwrócić uwagę na odpowiedź serwera:

Query OK. 2 rows affected (0.03 sec)

która wskazuje, że zapytanie wpłynęło na 2 rekordy. Tak jest w istocie. W rzeczywistości instrukcja ta zachowała się tak, jakby wykonane zostały jedno po drugim następujące polecenia:

DELETE FROM Osoba WHERE id-1;

INSERT INTO Osoba VALUES(1. 'Jan'. 'Janowski'. 1990. 'Gliwice'):


Wyszukiwarka

Podobne podstrony:
skanuj0496 (2) 514 PHP i MySQL dla każdego którego wynik jest przypisywany zmiennej count. Wartość t
skanuj0219 (3) 232 PHP i MySQL dla każdego Na początku jest wywoływana funkcja session_start, rozpoc
skanuj0161 (9) 172 PHP i MySQL dla każdego Zwraca ona ciąg strl, z którego począwszy od znaku o inde
skanuj0163 (9) 174 PHP i MySQL dla każdego Listing 6.12. Wykorzystanie funkcji strtok <?php $str

więcej podobnych podstron