>-----Original Message-----
>From: Paul DuBois [mailto:[EMAIL PROTECTED] 
>Sent: Wednesday, April 05, 2006 2:55 AM
>To: Garrett, Philip (MAN-Corporate); dbi-users@perl.org
>Subject: Re: Not exactly a dbi question
>
>On 4/4/06 15:31, "Garrett, Philip (MAN-Corporate)"
><[EMAIL PROTECTED]> wrote:
>
>>> -----Original Message-----
>>> From: Paul DuBois [mailto:[EMAIL PROTECTED]
>>> Sent: Tuesday, April 04, 2006 4:20 PM
>>> To: Jonathan Mangin; Garrett, Philip (MAN-Corporate);
>> dbi-users@perl.org
>>> Subject: Re: Not exactly a dbi question
>>> 
>>> On 4/4/06 15:06, "Jonathan Mangin" <[EMAIL PROTECTED]> wrote:
>>> 
>>>> Autocommit is on. Perhaps you're misunderstanding. An update is not

>>>> supposed to happen if the column to be updated is equal to the data

>>>> being stuffed into it. I want $row to reflect that but $row is 
>>>> always 1 even when an update did not happen. Is it broke?
>>>> 
>>>> --Jon
>>> 
>>> No, the default changed:
>>> 
>>> 2003-06-22  Rudy Lippan  <[EMAIL PROTECTED]> (2.9002)
>>>     * moved pod into mysql.pm from mysql.pod
>>>     * Changed the default behaviour of mysql_found_rows, so now
>>>       'UPDATE table set field=?' will return the number of rows
>>>       matched
>>>       and not the number of rows physically changed. You can get the
>>>       old
>>>       behaviour back by adding "mysql_found_rows=0" to the dsn
passed
>>>       to connect.
>> 
>> Sorry, I've been answering your question while assuming the mysql
>> driver conformed to the documented DBI interface.
>> 
>> Perhaps this is a mysql thing, not a DBD::mysql thing?
>
> Perhaps. What is the non-conformity to the documented DBI interface to
> which you refer?

The DBI pod says:

    For a non-SELECT statement, execute returns the number of rows
    affected, if known. If no rows were affected, then execute returns
    "0E0", which Perl will treat as 0 but will regard as true. Note that
    it is not an error for no rows to be affected by a statement. If the
    number of rows affected is not known, then execute returns -1.

The OP said that execute() was returning 1, whether the row was affected
or
not.

Philip

Reply via email to