Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Błąd składni, update; if row_count = 0 then insert;
tkopacki
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 16.02.2008

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


Witam, piszę aplikację wielojęzykową i mam problem przy edycji np. filmów. Gdy chcę przykładowo zmienić friendlyUrl filmu, używam zapytania:
  1. UPDATE videos_lang SET friendlyTitle = 'kolektor-soneczny-retro' WHERE idVideo = 381 AND sig ='pl'; IF (SELECT ROW_COUNT()) = 0 THEN INSERT INTO videos_lang (friendlyTitle, idVideo, sig) VALUES ('kolektor-soneczny-retro', 381, 'pl') END IF;

Nie wiadome jest, czy tłumaczenie filmu w wybranym języku już istnieje, więc najpierw próbuję zaktualizować rekord, a jeśli on nie istnieje, to stworzyć go. Niestety, baza zwraca mi komunikat o błędzie składni.
  1. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF (SELECT ROW_COUNT()) = 0 THEN INSERT INTO videos_lang (friendlyTitle, idVideo' at line 1

Co jest nie tak w tym zapytaniu?
Pozdrawiam, Tomasz.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
webdice
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




http://dev.mysql.com/doc/refman/5.5/en/ins...-duplicate.html
Go to the top of the page
+Quote Post
tkopacki
post
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 16.02.2008

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


Cytat
In general, you should try to avoid using an ON DUPLICATE KEY UPDATE clause on tables with multiple unique indexes.

W mojej tabeli istnieje klucz złożony, (idVideo, sig), gdzie idVideo jest numerem filmu, a sig, dwu znakową sygnaturą języka (pl|de|en...). Skoro jest to sposób niezalecany do tego rodzaju tabel, czy znaczy to, że może być niewydajny przy dużej ilości danych w tabeli?

Ten post edytował tkopacki 29.10.2012, 08:07:35
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




W przypadku takim jak Twój raczej nie widzę żadnych przeciwskazań by używać multi key


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 02:11