-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Benjamin, et al --

...and then Benjamin Pflugmann said...
% 
% Hi.

Hi again!


% 
% On Fri 2002-12-27 at 20:37:58 -0500, [EMAIL PROTECTED] wrote:
% > Hi, all --
% > 
% > What's the best way to change your database schema around if you have
% > data in it?  How do you know when to simply ALTER TABLE and when to dump
% > the whole thing (perhaps doing specific SELECTs to spit out the data
% > you'd like to have in the end to be processed by some script that will
% > make the new table structure)?
% 
% Well, I guess it depends. I would start with making a backup. :-)

Of course :-)


% 
% Personally, I prefer to change the database with ALTER TABLE and
% UPDATEs, because I can get immediate feedback and I am comfortable

Hmmm...  OK.


% enough with writing such SQL queries from head. Do not forget to save
% the SQL commands in a file in case you have to start from scratch
% (backup).

Makes sense.  My inclination is to script it anyway, though for a real
one-time change maybe not.  Maybe we'd want to apply the changes to a
restored copy from before tonight's new backup, for instance...


% 
% I suppose if you are quite comfortable with e.g. Perl and/or the
% changes are going to be complex, writing a script is the better idea,

I don't know how complex things have to be before they're complex enough
for a script, but it sounds like it's possible.  OK; so maybe one needs a
script.  But, meanwhile, you can do this just within the database?  Wow.


% because it is more forgiving if you make errors. OTOH, you have a
% bigger overhead, depending on how well you know your scripting
% language.

Fairly well -- and I could always stand to learn more :-)


% 
% > I don't have a good example, but suppose I have a few tables with some
% > fields each and I realize that I should make a new table with data from
% > some columns of some tables.  What to do?
% 
% If you choose to go the SQL route, have a look at TEMPORARY TABLES,
% CREATE TABLE ... SELECT and INSERT ... SELECT. Don't forget that you

You mean a CREATE TABLE command that has SELECT as part of it, and an
INSERT command that has SELECT as part of it?  Actually I wanted to know
how to do the latter but didn't think it could be done!  Briefly:

  create table ccards
  (
    # ID number
    id smallint not null default 0 auto_increment primary key ,
  ...
    hash tinyblob       # hash of the card: have we seen this one before?
  ) ;
  create table clientcards
  (
    # ID number
    id smallint not null default 0 auto_increment primary key ,
    client smallint ,   # references client.id
    card smallint ,     # references ccards.id (but must be disconnected)
    type smallint ,     # references ccardtypes.id      ### need this here?
    hash tinyblob       # references ccards.hash (but must be disconnected)
  ) ;
  ...
  insert into ccards (type,name,number,expdate) values
    ( '1' , 'david thorburn-gundlach' , '1234 5678 9abc def0' , '2003-06-00') ;
  update ccards set hash = md5(number) where id = last_insert_id() ;
  insert into clientcards values
    ( '' , '1' , '1' , '1' , 
      select ccards.hash where ccards.id = last_insert_id() ) ;

Everything up to the clientcards insert works just fine.  How can I
insert into clientcards the info including the hash from ccards?  [I'm
just doing this for the testing phase, since not only will the ccards
table be locked away in a real database but I'll be inserting the values
one at a time from my front end where I'll calculate the md5 sum myself,
but it works as an example.]


% can test with the SELECT and only add CREATE TABLE / INSERT part at
% the end. And LIMIT is your friend.

OK :-)


% 
% HTH,
% 
%       Benjamin.
% 
% -- 
% [EMAIL PROTECTED]


Thanks & HAND & Happy Holidays

:-D
- -- 
David T-G                      * There is too much animal courage in 
(play) [EMAIL PROTECTED] * society and not sufficient moral courage.
(work) [EMAIL PROTECTED]  -- Mary Baker Eddy, "Science and Health"
http://www.justpickone.org/davidtg/    Shpx gur Pbzzhavpngvbaf Qrprapl Npg!

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (FreeBSD)

iD8DBQE+DXd5Gb7uCXufRwARAmtVAJ4i8dpmQz8yd/okzgTLdwXLn1HyiwCggIts
AOGgeFdZYnxRWLmgF6FDmVE=
=JheJ
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <mysql-unsubscribe-##L=##[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to