Autor | Zpráva | ||
---|---|---|---|
qteck Profil |
#1 · Zasláno: 20. 2. 2015, 14:28:50 · Upravil/a: qteck
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 * |
#2 · Zasláno: 20. 2. 2015, 14:37:40
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() Ale třeba mně někdo upřesní, nebo opraví. |
||
Kajman Profil |
#3 · Zasláno: 20. 2. 2015, 15:22:59
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) |
||
Časová prodleva: 10 let
|
0