Autor Zpráva
qteck
Profil
Ahoj,

moje tabulka vypadá takto:

id    int(11)    NO    PRI    NULL    auto_increment
title    varchar(255)    NO         NULL     
content    text    NO         NULL     
author    varchar(255)    NO         NULL     
place    varchar(255)    NO         NULL     
added    datetime    NO         NULL     
unique_key    int(11)    NO    UNI    NULL     

a sql dotaz takto:

INSERT INTO articles 
(title, content, author, place, added, unique_key) 
VALUES 
('ahoj', 'i am duplicate', 'moje jmeno', 'místo', NOW(), 85) 
ON DUPLICATE KEY UPDATE unique_key = 85


a snažím se změnit záznam s unikátním klíčem 85.

dotaz proběhne úspěšně, ale adminer říká 0 ovlivněných řádků.

pokud změním unikátní index a tedy místo 85 neexistující unikátní číslo řádek se vloží.

každopádně já ho potřebuju updatenout, jak na to?

Díky.


INSERT INTO articles 
(title, content, author, place, added, unique_key) 
VALUES 
('ahoj', 'i am duplicate', 'moje jmeno', 'místo', NOW(), '10') 
ON DUPLICATE KEY UPDATE title ='ahoj', content='content', author='boob'

okay, jsem hňup. Díky
fibi
Profil *
Takhle na první pohled bych řekl že za to ON DUPLICATE KEY UPDATE musíš dát jakoby UPDATE příkaz.
Tedy nějak takto :

INSERT INTO articles 
(title, content, author, place, added, unique_key) 
VALUES 
('ahoj', 'i am duplicate', 'moje jmeno', 'místo', NOW(), 85) 
ON DUPLICATE KEY UPDATE title = 'ahoj', content = 'i am duplicate', author = 'moje jmeno', place = 'misto', added = NOW()
Vždycky jsem si tento obrat vykládal tak že před ON DUPLICATE zapisuji INSERT a za něj UPDATE.
Ale třeba mně někdo upřesní, nebo opraví.
Kajman
Profil
Jen poznámka, že se příslušné hodnoty v update nemusí vypisovat znovu, pokud se nemají lišit od případného insertu. Je možné použít funkci values. Tedy něco jako

... ON DUPLICATE KEY UPDATE title =values(title), author=values(author)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: