[ mipe @ 21.12.2011. 22:22 ] @
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 :(
[ darkosos @ 22.12.2011. 07:17 ] @
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.
[ mipe @ 22.12.2011. 19:49 ] @
E hvala, nisam znao da mogu da stavim SELECT sysdate - :num_c u upit...