[Chicago-talk] perl DBI ?

Warren Lindsey wlindsey at blackhatlounge.net
Mon Mar 21 18:48:57 PST 2005


DBAs around the world smile upon your decision :-)

Richard Reina wrote:

>Warren,
>
>Thanks very much the reply.  In the end I thought it
>best to make one permanent table.
>
>Thanks again,
>
>Richard
>--- Warren Lindsey <wlindsey at blackhatlounge.net>
>wrote:
>
>  
>
>>Just add another column to a permanent temp table. 
>>This applies to any 
>>database system.  You have to keep track of the temp
>>tables you're 
>>creating somehow or else you end up with a system
>>littered with temp tables.
>>
>>There is a huge performance hit for creating new
>>objects in a database 
>>(DDL) vs inserting/updating/deleting a row (DML)
>>because space must be 
>>allocated and the data-dictionary must be updated. 
>>It fragments the 
>>tablespaces in your database as you create and drop
>>objects.  It breaks 
>>your transactional integrity because DDL requires a
>>commit.  It becomes 
>>very difficult to estimate space usage when objects
>>do not last long, 
>>sometimes they are there, sometimes they aren't. It
>>requires the 
>>application user to have create and drop privileges
>>that only your 
>>application owner should have.
>>
>>But hey, if you're going to do it, do it right :-) 
>>Create the table and 
>>catch the exception/error if it exists.  This let's
>>the database do the 
>>work and saves you a trip by not having to lookup
>>whether it exists or 
>>not.  Same trick applies when inserting a row into a
>>unique/primary key 
>>column.  Let the database do the work.
>>
>>Richard Reina wrote:
>>
>>    
>>
>>>when I run these lines of code :
>>>
>>>my $T_NO = 12569;
>>>use DBI;
>>>my $dbh =
>>>      
>>>
>>DBI->connect("DBI:mysql:database=carr_search;192.168.0.1",user,password);
>>    
>>
>>>my $q = "CREATE TABLE IF NOT EXISTS CS_? (
>>>ID_NO MEDIUMINT,
>>>NAME VARCHAR(30),
>>>TYPE CHAR(1)
>>>)";
>>>my $sth = $dbh->prepare($q);
>>>$sth->execute($T_NO);
>>>
>>>      
>>>
>>>from w/in a program I get:
>>    
>>
>>>DBD:mysql::st execute failed: You have an error in
>>>your SQL syntax near '12569 ( 
>>>ID_NO MEDIUMINT,
>>>NAME VARCHAR(30),
>>>TYP' at line 2 at ./carr_s.pl line 36.
>>>
>>>However if I cut and paste the exact same code and
>>>make it it's own program then execute it, it works
>>>perfectly. Can anyone tell me what's happening and
>>>      
>>>
>>how
>>    
>>
>>>I can fix it?
>>>
>>>Thanks,
>>>
>>>Richard
>>>
>>>
>>>_______________________________________________
>>>Chicago-talk mailing list
>>>Chicago-talk at pm.org
>>>http://mail.pm.org/mailman/listinfo/chicago-talk
>>> 
>>>
>>>      
>>>
>>_______________________________________________
>>Chicago-talk mailing list
>>Chicago-talk at pm.org
>>http://mail.pm.org/mailman/listinfo/chicago-talk
>>
>>    
>>
>
>_______________________________________________
>Chicago-talk mailing list
>Chicago-talk at pm.org
>http://mail.pm.org/mailman/listinfo/chicago-talk
>  
>


More information about the Chicago-talk mailing list