Thoralf,

I have added the feature you described in SVN.
Spying on the implementation which already exists for oracle, I have used the tablefk template instead of adding an extra alter-table.template.

Thanks again for sharing your patch,

    Thomas


On Fri, 18 Nov 2005, Thoralf Rickert wrote:

Hi!

I think, the second approach is possible without much work. I did three things 
to use ALTER TABLEs.

1. I've added a new for-loop in the sql/base/Control.vm at the end
  of the foreach datamodel loop. This loop goes through all tables
  and calls a new template called alter-table.vm in the desired
  database type.

  #foreach ($dataModel in $dataModels)
   [...]
   #foreach ($table in $database.tables)
    $generator.parse("$basepath/alter-table.vm",$outFile,"table",$tbl)
   #end
  #end

2. I've created the alter-table.vm in the mysql template directory
  (sql/base/mysql) and added the ALTER TABLE command.

  #foreach ($fk in $table.ForeignKeys)
   ALTER TABLE $table.Name add FOREIGN KEY ($fk.LocalColumnNames)
     REFERENCES $fk.ForeignTableName ($fk.ForeignColumnNames)
     #if ($fk.hasOnUpdate()) ON UPDATE $fk.OnUpdate #end
     #if ($fk.hasOnDelete()) ON DELETE $fk.OnDelete #end;
  #end

3. I've deleted the content from the /sql/base/mysql/foreignkey.vm which
  is responsible for the foreign key creating in the CREATE TABLE
  command.

So, there is just one point to do in every DB Template. Create an empty 
alter-table.vm template. That is done in 2 minutes. And if somebody has a patch 
for a specific database type, he/she can change the alter-table.vm and delete 
the content from foreignkey.vm as I did it. That's it.

bye
Thoralf

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to