Hello.
> 1) The record is the actual record in the database not a possible
>duplicate, e.g. is there a built-in record number identifying the
>actual DB record or do I have to organise that in the table structure.
Perhaps, you should add UNIQUE key to you table structure. See:
http://dev.mysql.com/doc/refman/5.0/en/create-index.html
> 2) The record hasnt been or cannot be changed by another
>thread/process, possibly by. locking / re-reading the record (is there
>another way?).
MySQL provides different kinds of locking. See:
http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html
http://dev.mysql.com/doc/refman/5.0/en/innodb-transaction-model.html
Jan M wrote:
> Hi,
>
> Newbie question (MySql 5.0 using C API). I've searched the mysql
> website/Internet but cannot find the answer.
>
> How do I update a record obtained from a query result while ensuring that:
>
> 1) The record is the actual record in the database not a possible duplicate,
> e.g. is there a built-in record number identifying the actual DB record or
> do I have to organise that in the table structure.
>
> 2) The record hasnt been or cannot be changed by another thread/process,
> possibly by. locking / re-reading the record (is there another way?).
>
> How do I lock and re-read the [actual] record anyway?
>
> Code snippet:
>
> sprintf(szStr,
> "SELECT * FROM %s WHERE UserName = '%s'",
> DB_TABLE,
> szUserName);
>
> if(mysql_real_query(db, szStr, strlen(szStr)) == 0)
> {
> result = mysql_store_result(db);
>
> if(result) // There are rows
> {
> while ((row = mysql_fetch_row(result)))
> {
> // *** I need to update the record here! ***
> }
>
> mysql_free_result(result);
> }
>
> TIA.
>
> Jan
>
>
>
>
--
For technical support contracts, goto https://order.mysql.com/?ref=ensita
This email is sponsored by Ensita.NET http://www.ensita.net/
__ ___ ___ ____ __
/ |/ /_ __/ __/ __ \/ / Gleb Paharenko
/ /|_/ / // /\ \/ /_/ / /__ Gleb.Paharenko@stripped
/_/ /_/\_, /___/\___\_\___/ MySQL AB / Ensita.NET
<___/ www.mysql.com