diff --git a/app/code/community/OpenTools/Ordernumber/sql/opentools_ordernumber_setup/install-0.1.0.php b/app/code/community/OpenTools/Ordernumber/sql/opentools_ordernumber_setup/install-0.1.0.php index d464bd41e3ffb0f5893a9cca10e3710d94a46f6d..0530a908995be0034e4e94b50ea6f74de3f72d62 100644 --- a/app/code/community/OpenTools/Ordernumber/sql/opentools_ordernumber_setup/install-0.1.0.php +++ b/app/code/community/OpenTools/Ordernumber/sql/opentools_ordernumber_setup/install-0.1.0.php @@ -11,26 +11,34 @@ $installer = $this; /** * Create table opentools_ordernumber */ -$table = $installer->getConnection() - ->newTable($installer->getTable('opentools_ordernumber/ordernumber')) - ->addColumn('ordernumber_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array( - 'unsigned' => true, - 'identity' => true, - 'nullable' => false, - 'primary' => true, - ), 'Ordernumber id') - ->addColumn('number_type', Varien_Db_Ddl_Table::TYPE_TEXT, 63, array('nullable'=> false), 'Number Type') - ->addColumn('number_scope', Varien_Db_Ddl_Table::TYPE_TEXT, 20, array('nullable'=> true, 'default'=>''), 'Number Scope') - ->addColumn('number_format', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array('nullable'=> true, 'default'=>''), 'Number Format') - ->addColumn('count', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array('unsigned'=>true, 'nullable'=>false), 'Counter') - ->addIndex($installer->getIdxName( - $installer->getTable('opentools_ordernumber/ordernumber'), - array('number_type', 'number_scope', 'number_format'), - Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE - ), - array('number_type', 'number_scope', 'number_format'), - array('type' => Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE) - ) - ->setComment('Ordernumber Counter Table'); -// TODO: drop table if exists! -$installer->getConnection()->createTable($table); +$connection = $installer->getConnection(); +$tablename = $installer->getTable('opentools_ordernumber/ordernumber'); + +if (!$connection->isTableExists($tablename)) { + + $table = $connection + ->newTable($tablename) + ->addColumn('ordernumber_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array( + 'unsigned' => true, + 'identity' => true, + 'nullable' => false, + 'primary' => true, + ), 'Ordernumber id') + ->addColumn('number_type', Varien_Db_Ddl_Table::TYPE_TEXT, 63, array('nullable'=> false), 'Number Type') + ->addColumn('number_scope', Varien_Db_Ddl_Table::TYPE_TEXT, 20, array('nullable'=> true, 'default'=>''), 'Number Scope') + ->addColumn('number_format', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array('nullable'=> true, 'default'=>''), 'Number Format') + ->addColumn('count', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array('unsigned'=>true, 'nullable'=>false), 'Counter') + ->addIndex($installer->getIdxName( + $tablename, + array('number_type', 'number_scope', 'number_format'), + Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE + ), + array('number_type', 'number_scope', 'number_format'), + array('type' => Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE) + ) + ->setComment('Ordernumber Counter Table'); + // TODO: drop table if exists! + $installer->getConnection()->createTable($table); +} else { + // Table already exists, don't do anything (but also don't try to create the table again) +}