24 messages in com.mysql.lists.plusplusRe: Inserting with a column that uses...
FromSent OnAttachments
Graham Reitz08 Aug 2007 20:17 
Graham Reitz08 Aug 2007 20:49 
Graham Reitz08 Aug 2007 21:03 
Graham Reitz08 Aug 2007 21:14 
Warren Young09 Aug 2007 05:04 
Graham Reitz10 Aug 2007 16:58 
Graham Reitz10 Aug 2007 17:41 
Graham Reitz10 Aug 2007 22:45 
Graham Reitz10 Aug 2007 23:26 
Jim Wallace11 Aug 2007 18:28 
Graham Reitz11 Aug 2007 20:50 
Graham Reitz11 Aug 2007 21:10 
Jim Wallace12 Aug 2007 11:42 
Graham Reitz12 Aug 2007 13:07 
Warren Young13 Aug 2007 15:51 
Graham Reitz13 Aug 2007 20:49 
Joel Fielder14 Aug 2007 00:41 
Graham Reitz14 Aug 2007 13:18 
Warren Young14 Aug 2007 15:11 
Graham Reitz14 Aug 2007 18:37 
Graham Reitz14 Aug 2007 20:41 
Warren Young16 Aug 2007 05:00 
Graham Reitz16 Aug 2007 16:00 
Warren Young28 Dec 2007 02:36 
Subject:Re: Inserting with a column that uses auto_increment
From:Graham Reitz (grah@mac.com)
Date:08/12/2007 01:07:05 PM
List:com.mysql.lists.plusplus

ahh....ok. I'll try using different namespaces. That's unfortunate and really suggests a larger design issue with the mysql++ library. It does, although, have many v. nice features.

thanks, g

On Aug 12, 2007, at 1:43 PM, Jim Wallace wrote:

Right. The insert uses the macro name as table name, selects don't, so the insert will have to have the table name.

You may be able to get around it with namespaces.

-----Original Message----- From: Graham Reitz [mailto:grah@mac.com] Sent: Sunday, August 12, 2007 12:10 AM To: Jim Wallace Cc: plus@lists.mysql.com Subject: Re: Inserting with a column that uses auto_increment

Ok, that seems to work, thanks. Another question:

How do you create two sql_create macros with the same name? (doesn't compile)

If I change the name of the sql_create_N(name,...) to something else it won't let me insert it into the database because it has a different table name that doesn't match.

Thanks, Graham

On Aug 11, 2007, at 8:29 PM, Jim Wallace wrote:

I use auto_increment often. The trick is to not include that column in the sql_create_* macro. This may mean you have > 1 macro for the same table, one for insert w/o that column, and one for retrieval with

that column. I often have > 1 macro for the same table depending on how I'm using it.

HTH

-----Original Message----- From: Graham Reitz [mailto:grah@mac.com] Sent: Saturday, August 11, 2007 2:27 AM To: plus@lists.mysql.com Subject: Inserting with a column that uses auto_increment

How do you prevent an insert as shown in the code below from putting "bogus" data in an auto_increment field?

It seems like the billing_id field, in the code below, inserts a number based on the un-initialized value of client_id, instead of letting the database auto_increment the value. What's a good method to deal with this, that allows the database to auto_increment a database field?

Thanks, Graham

/************ CODE ************/

#include <mysql++.h> #include <custom.h>

using namespace mysqlpp;

sql_create_2(clients, 1, 2, unsigned int, client_id, // auto_incremented field unsigned int, billing_id)

void populate_client_info(clients& client_info) { client_info.billing_id = 1; }

int main (int argc, char* const argv[]) { Connection connection("db_name","ip_address","user", "password",3306, false);

Query client_query = connection.query();

clients a_client; populate_client_info(a_client);

client_query.insert(a_client); client_query.execute();

return 0; }