Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Insert ignore, pogrešan upit

[es] :: Oracle :: Insert ignore, pogrešan upit

[ Pregleda: 1670 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mipe
Mirko Petrović
zarez
Beograd

Član broj: 295755
Poruke: 10
*.cpe.vektor.net.



+3 Profil

icon Insert ignore, pogrešan upit21.12.2011. u 22:22 - pre 150 meseci
Zdravo svima!

Dobio sam da malo zbudžim postojeću php skriptu koja radi sa Oracle bazom. Nikada pre nisam video Oracle upite i ove bind-ove. U svakome slučaju, problem je bio što se sa ovim upitom povremeno desi ORA-00001: unique constraint violated greška. Ovo je upit:
Code:
$binds = array(':uid' => $userid, ':num_c' => $compute );
$query = "INSERT into stats(uid, log_timestamp)
        VALUES (:uid, sysdate - :num_c)";

uid je unique

E sada, izgleda da INSERT IGNORE nije moguć, malo sam guglao i došao do ovoga:
Code:
$query = "INSERT into stats(uid, log_timestamp)
    SELECT :uid, :num_c
    FROM dual
    WHERE NOT EXISTS (
        SELECT 1 FROM stats 
        WHERE uid = :uid
        AND log_timestamp = sysdate - :num_c)";

Ali ovo ORA-01840: input value not long enough for date format.

Pomagajte ljudi, ceo dan kljucam nad ovim :(
 
Odgovor na temu

darkosos
Darko Šoš
Beograd

Član broj: 5053
Poruke: 1131
*.ptt.rs.



+64 Profil

icon Re: Insert ignore, pogrešan upit22.12.2011. u 07:17 - pre 150 meseci
Pa ovaj uid zvuci kao PK, tako da verovatno prvo javlja da takav vec postoji.
A ovo drugo, koliko vidim, u select-u iz dual-a na drugom mestu imas samo :num_c a ne sysdate - :num_c kao u prvom primeru.
I trece, ako je ovaj uid zaista PK, onda ti u ugnjezdenom upitu NOT EXISTS ne treba "AND log_timestamp = sysdate - :num_c" u WHERE uslovu.
 
Odgovor na temu

mipe
Mirko Petrović
zarez
Beograd

Član broj: 295755
Poruke: 10
*.cpe.vektor.net.



+3 Profil

icon Re: Insert ignore, pogrešan upit22.12.2011. u 19:49 - pre 150 meseci
E hvala, nisam znao da mogu da stavim SELECT sysdate - :num_c u upit...
 
Odgovor na temu

[es] :: Oracle :: Insert ignore, pogrešan upit

[ Pregleda: 1670 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.