Starting with versioning mysql schemata without overkill. Good solutions?

后端 未结 11 1821
感动是毒
感动是毒 2020-12-28 23:40

I\'ve arrived at the point where I realise that I must start versioning my database schemata and changes. I consequently read the existing posts on SO about that topic but I

11条回答
  •  甜味超标
    2020-12-29 00:01

    At our company we did it this way:

    We put all tables / db objects in their own file, like tbl_Foo.sql. The files contain several "parts" that are delimited with

    -- part: create
    

    where create is just a descriptive identification for a given part, the file looks like:

    -- part: create
    IF not exists ...
    CREATE TABLE tbl_Foo ...
    -- part: addtimestamp
    IF not exists ...
    BEGIN
       ALTER TABLE ...
    END
    

    Then we have an xml file that references every single part that we want executed when we update database to new schema. It looks pretty much like this:

    
       
         
         
       
       
          
             
             
          
          
             
          
                 
    
    

    The part if for GUI, and with is to partition changes. The :s are executed sequentially. We have some other entities, like sqlclr to do different things like deploy binary files, but that's pretty much it.

    Of course we have a component that takes that playlist file and a resource / filesystem object that crossreferences the playlist and takes out wanted parts and then runs them as admin on database.

    Since the "parts" in .sql's are written so they can be executed on any version of DB, we can run all parts on every previous/older version of DB and modify it to be current. Of course there are some cases where SQL server parses column names "early" and we have to later modify part's to become exec_sqls, but it doesn't happen often.

提交回复
热议问题