मुझे लगता है कि ऐसा कुछ है जो अभी तक लागू नहीं किया गया है।
आप addColumn
के स्रोत को देखें, तो आप इसे एक identity/auto_increment
विकल्प के लिए लग रहा है और आंतरिक स्तंभ प्रतिनिधित्व पर एक IDENTITY
विशेषता सेट देख सकते हैं।
#File: lib/Varien/Db/Ddl/Table.php
if (!empty($options['identity']) || !empty($options['auto_increment'])) {
$identity = true;
}
$upperName = strtoupper($name);
$this->_columns[$upperName] = array(
'COLUMN_NAME' => $name,
'COLUMN_TYPE' => $type,
'COLUMN_POSITION' => $position,
'DATA_TYPE' => $type,
'DEFAULT' => $default,
'NULLABLE' => $nullable,
'LENGTH' => $length,
'SCALE' => $scale,
'PRECISION' => $precision,
'UNSIGNED' => $unsigned,
'PRIMARY' => $primary,
'PRIMARY_POSITION' => $primaryPosition,
'IDENTITY' => $identity
);
हालांकि, अगर आप कनेक्शन वस्तु
#File: lib/Varien/Db/Adapter/Pdo/Mysql.php
public function createTable(Varien_Db_Ddl_Table $table)
{
$sqlFragment = array_merge(
$this->_getColumnsDefinition($table),
$this->_getIndexesDefinition($table),
$this->_getForeignKeysDefinition($table)
);
$tableOptions = $this->_getOptionsDefination($table);
$sql = sprintf("CREATE TABLE %s (\n%s\n) %s",
$this->quoteIdentifier($table->getName()),
implode(",\n", $sqlFragment),
implode(" ", $tableOptions));
return $this->query($sql);
}
पर createTable
विधि को देखो आप देख सकते हैं _getColumnsDefinition
, _getIndexesDefinition
, और _getForeignKeysDefinition
एक CREATE SQL
टुकड़ा बनाने के लिए इस्तेमाल कर रहे हैं। इनमें से कोई भी विधि identity
या auto_increment
का कोई संदर्भ नहीं देती है, न ही वे किसी भी एसक्यूएल उत्पन्न करने के लिए प्रतीत होते हैं जो ऑटो वृद्धि उत्पन्न करेगा।
इस वर्ग में ही संभव उम्मीदवारों
/**
* Autoincrement for bind value
*
* @var int
*/
protected $_bindIncrement = 0;
जो एक पीडीओ बाध्य पैरामीटर (auto_increment
के साथ कुछ नहीं) के लिए वेतन वृद्धि संख्या को नियंत्रित करने के लिए इस्तेमाल किया जाता है।
वहाँ भी
protected function _getOptionsDefination(Varien_Db_Ddl_Table $table)
{
$definition = array();
$tableProps = array(
'type' => 'ENGINE=%s',
'checksum' => 'CHECKSUM=%d',
'auto_increment' => 'AUTO_INCREMENT=%d',
'avg_row_length' => 'AVG_ROW_LENGTH=%d',
'comment' => 'COMMENT=\'%s\'',
'max_rows' => 'MAX_ROWS=%d',
'min_rows' => 'MIN_ROWS=%d',
'delay_key_write' => 'DELAY_KEY_WRITE=%d',
'row_format' => 'row_format=%s',
'charset' => 'charset=%s',
'collate' => 'COLLATE=%s'
);
foreach ($tableProps as $key => $mask) {
$v = $table->getOption($key);
if (!is_null($v)) {
$definition[] = sprintf($mask, $v);
}
}
return $definition;
}
यहाँ auto_increment
का उल्लेख है, लेकिन इस विकल्प तालिका पर सेट पर कार्रवाई करने के लिए किया जाता है। यह auto_increment
तालिका AUTO_INCREMENT
विकल्प को नियंत्रित करता है, जिसका उपयोग यह नियंत्रित करने के लिए किया जा सकता है कि AUTO_INCREMENT
कौन सा पूर्णांक प्रारंभ होता है।
इस मूल प्रश्न के बाद से वर्ष में ऑटोइनक्रिकमेंट पेश किया गया है। – clockworkgeek
10000 से शुरू होने के लिए ऑटो वृद्धि को बताने का कोई तरीका? –