Re: how to lock multiple row in Oracle Db?

From: Date: Wed, 07 Dec 2005 23:26:04 +0000
Subject: Re: how to lock multiple row in Oracle Db?
References: 1  Groups: php.db 
Request: Send a blank email to php-db+get-40793@lists.php.net to get a copy of this message
Rasim ÞEN wrote:
Hi friends , my code like this $sql="SELECT mid,substr(ROWID,0,100) as nROWID,MEMBER_ID, NAME, SURNAME, E_MAIL, SUBJECT, MAIL_BODY, to_char(DATE_CREATED,'DD.MM.YYYY HH24:MI:SS') as DATE_CREATED, RETRY, PRIORITY, E_MAIL_FROM, RECEIVER_MEMBER_ID, RECEIVER_NAME, RECEIVER_SURNAME, MAIL_TYPE, ATTACHMENT1, ATTACHMENT2, EMBEDDING1, EMBEDDING2 FROM MEMBERS_TO_MAIL_SEND_HTML where flag=0 and rownum<2000"; putenv("NLS_LANG=TURKISH_TURKEY.WE8ISO8859P9"); $baglanti = ocilogon(USERNAME,PASSWORD,DATABASE); $statement = ociparse ($baglanti, $sql); ociexecute ($statement); $i=0; while (ocifetchinto ($statement,$row, OCI_ASSOC)) {
    ........
    ........
I want to lock this 2000 rows, for this I make query like below: $sql=" .............. FROM MEMBERS_TO_MAIL_SEND_HTML where flag=0 and rownum<2000 FOR UPDATE";
    this time, it is updateting only one row.
I tried to use "LOCK TABLE table IN ROW SHARE MODE;LOCK TABLE table IN ROW SHARE MODE;"; but I don't know how to use in php. How can I lock all rows, any advice ? Thanks a lot rasim
Why do you think they are not being locked? Where and when is the UPDATE statement being executed? Tom Kyte may offer help on locking. For example, see http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:927629362932 Finally, I suggest using the refactored OCI8 driver. This is currently available from http://pecl.php.net/package/oci8 and http://pecl4win.php.net/ext.php/php_oci8.dll Chris

« previous php.db (#40793) next »