Autor Zpráva
luma64
Profil
Zdravim, viete mi pls poradit, preco mi nefunguje parameter poctu riadkov LIMIT 1 pri update? Mam nasledujuci update:

update nv_mesiace set cent_polozky='5.3425930' where epi='00110204' and kod='001101' and skratka='INT' and obdobie='102012' LIMIT 1;

Selekt od casti where mi zaznamy zobrazi, takisto update zafunguje. Ale nie vtedy, ked tam je pouzite LIMIT cokolvek. A potrebujem robit update iba jednej vety.
Kajman
Profil
Po tomto updatu tedy není ani na jednom řádku chtěná hodnota cent_polozky u řádků, které vrátí neprázdný select se stejným where?

Kolik update ovlivnil řádků, byl nějaký warning nebo chyba?
luma64
Profil
Aha...Teraz mi je to jasnejsie. PHP kod mi vygeneroval spomenuty query. Tu je komplety. Je ale pravdepodobne, ze hodnoty v cent_polozky uz ma presne taku ako chcem update. Ak sa update nevykona vseobecne predpokladam, ze zaznam pre takyto update neexistuje a potom ho vytvorim a urobim update, ktory sa nevykonal. Ako teda osetrit, ze ak sa update neurobil preto, lebo taka hodnota uz existuje som obisiel insert.
$qry="update nv_mesiace set cent_polozky='$cena_typnv' where epiz='$epiz'  and kododd='$kododd' and skratka='$skratka'  and obdobie='$obdobie' limit 1";
        echo "<br>Update nv_mesiace, typnv / $typnv : $qry";
        mysql_query($qry);
        exit;
        
        if (mysql_affected_rows()>0)
        {
        $nastav_ano='ANO';
        }
        else
        {
        
        //nebol update , vlozime zaznam do nv_mesiace
        $qry="insert into nv_mesiace(epiz,kododd,rc,meno,skratka,obdobie,zp)
        values ( '$epiz','$kododd', '$rc', '$meno', '$skratka', '$obdobie', '$zp' ) ";
        echo '<br>Vlozenie zaznamu do nv_mesiace pri prvom vyskyte: '.$qry;
        mysql_query($qry);
        
        //po insert update
        $qry="update nv_mesiace set cent_polozky='$cena_typnv' where epiz='$epiz'  and kododd='$kododd' and skratka='$skratka'  and obdobie='$obdobie' limit 1";
        echo '<br>Update nv_mesiace: '.$qry;
        mysql_query($qry);
luma64
Profil
Ako prosim rozlisim ci update nezbehol preto lebo:

- hodnota, ktorou chcem robit update v riadku je zapisana v poli, ktore chcem update ( v poli je napr col1=1000 a ja chcem urobit update col1 hodnotou 1000; v MySqlQueryBrowser dostanem hlasku, ze ziaden zaznam nebol update)

- neexistuje riadok, ktory chcem update (musim ho preto vytvorit )
Tori
Profil
Existuje taková kombinace sloupců kromě ID (např. cent_polozky + epiz + kododd + skratka + obdobie), která by jednoznačně identifikovala jeden konkrétní řádek, a zároveň se směla vyskytovat pouze jednou v tabulce? Pokud ano, tak by to šlo asi vyřešit unikátním klíčem přes tyto sloupce a pak použít INSERT ... ON DUPLICATE KEY UPDATE.

Resp. doplňující dotaz: Pokud se update neprovede proto, že v tabulce existuje odpovídající řádek a už je v něm uložena nová hodnota, tak chcete 1) vložit kopii nalezeného řádku, která se bude lišit jen tím jedním polem, nebo 2) najít další odpovídající řádek a ten updatovat?
luma64
Profil
Ano, ide o nutnost jedinecneho riadka cent_polozky + epiz + kododd + skratka + obdobie. Ak taky riadok neexistuje, vytvorim ho a urobim update jedneho z poli. Takto by to malo byt. Ale ak nahodou urobim update tou istou hodnotou , fnc mysql_affected_rows() mi vrati nulu a vtedy predpokladam, ze riadok neexistuje. Co je nespravne. A urobim insert, co sposobi duplicitu riadka.

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: