回答

7

自動增量限制與您正在使用的數據庫有關。 在Mysql中,Mysql_autoincrement,它也取決於你正在使用的引擎。 爲例:

對於MyISAM並且可以在多列索引 次級柱指定AUTO_INCREMENT BDB表。在這種情況下,用於AUTO_INCREMENT列的 生成的值被計算爲

可以對AUTO_INCREMENT一個通用文檔here

在一般的AUTO_INCREMENT被保留以數值字段是標識符的一部分索引(涉及一個或多個列)。

所以這可以適用於MySQL。

然而在教義auto_incriment似乎只alllowed爲@Id(主鍵)

21.2.9。 @GeneratedValue

指定哪個策略用於由@Id註釋的 實例變量的標識符生成。此註釋是可選的 ,只有在與@Id一起使用時纔有意義。

如果未使用@Id指定此註釋,則默認使用NONE策略 。

必需屬性:

策略:設置標識符生成策略的名稱。有效的 值爲AUTO,SEQUENCE,TABLE,IDENTITY,UUID,CUSTOM和NONE。 例子:

?php 
/** 
* @Id 
* @Column(type="integer") 
* @GeneratedValue(strategy="AUTO") 
*/ 
protected $id = null; 

Doctrine_auto_increment

你可能想以防萬一找到工作,張貼關於它

-3
/** 
* @Id 
* @Column(name="id", type="integer") 
* @GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

這將工作MySQL的一票!希望能幫助到你!

+1

OP特別詢問「不是主鍵的列」,你的答案涉及主鍵 – 2016-03-19 17:20:55

11

我用INT AUTO_INCREMENT UNIQUE

/** 
* @var integer 
* 
* @ORM\Column(type="integer", name="sequence", nullable=true, columnDefinition="INT AUTO_INCREMENT UNIQUE") 
*/ 
protected $sequence = null; 

主義遷移束columnDefinition產生

$this->addSql('ALTER TABLE table_name_here ADD sequence INT AUTO_INCREMENT UNIQUE'); 
相關問題