[development] sequences and table prefixing

Robert Douglass rob at robshouse.net
Thu Jan 19 14:12:38 UTC 2006

I'm having a hard time processing your example to see if it would let me 
keep my node sequences in one db and my spam sequences in another db. It 
looks to me, rather, that you're still switching the sequences table 
based on site, not the particular sequence based on site, like I'm 

Moshe Weitzman wrote:
> I've come across this with multi-sites as well. i always share sequences 
> table as you suggest.
> I haven't tried it, but I'm sure you could alter $db_prefix on a per 
> request basis. Just make your settings.php put in the right value for 
> sequences depending on the domain of the request.
> $db_prefix = array(...)
> switch (conf_init()) {
>   case '5th_site.com':
>     db_prefix['sequences'] = foo.sequences;
>     break;
>   default:
>     db_prefix['sequences'] = shared.sequences;
> }
> If you have lots of settings.php files (i.e. lots of sites), I usually 
> do an include(../settings_globals.inc) and put my common settings stuff 
> there. That way, I don't repeat the same code for each site. make sense?
> Having said that, I'd really like to see us do away with sequences and 
> just use native identity/auto-increment/serial fields instead.
> -moshe
> Robert Douglass wrote:
>> If I want to share tables between databases (user, spam, whatever), I 
>> usually have to consider issues with the primary key sequences. The 
>> solution that comes to mind is to share the sequences table as well. 
>> It is nice that Drupal offers this flexibility.
>> Is there a way that one can specify "use db1.sequences for node_id 
>> sequences, db2.sequences for user_id sequences, and db3.sequences for 
>> spam_id sequences"? I don't think so, but this might be a feature we 
>> should consider implementing.
>> Why? Because the current system only allows a database to join a 
>> shared pool of something (take spam for now) at the beginning of its 
>> lifetime. If I had 5 sites sharing spam tables, and wanted to 
>> integrate an existing site, I'd be out of luck if I had to rely on a 
>> shared, running sequid for the spam tables.
>> I think it would be very useful if one could specify a sequences array 
>> like the $db_prefix array:
>> $db_sequences = array(
>>   'node_id' => 'default',
>>   'spam_id' => 'db_spam.',
>> );
>> This would result in all sequences being taken from the default 
>> sequence table except for the (purely illustrational) 'spam_id' 
>> sequence, which would be taken from the db_spam.sequences table.
>> Is there a way to do this currently in Drupal that I've overlooked? 
>> Would people be in support of this functionality if a patch appeared?
>> cheers,
>> Robert

More information about the development mailing list