2013-05-14 77 views
1
public function up(){ 

     $this->createTable('POST', array(
      'id' => 'pk', 
      'isremoved' => 'integer NOT NULL', 
      'removaldate' => 'timestamp NULL', 
      'post' => 'text NOT NULL', 
      'creationdate' => 'timestamp NOT NULL', 
     )); 
} 

这是迁移的最新功能。正如你看到它是查询创建新表。默认情况下,YII为timestamp列创建等于CURRENT_TIMESTAMP的默认值,并创建附加参数并将其设置为ON UPDATE CURRENT_TIMESTAMP。YII迁移和表列默认值

我不需要时间戳的当前值,我不需要在更新行上更新此列。我必须做什么?顺便说一句,U使用MySQL

回答

1

杠杆断了MySQL创建表脚本:

show create table tablename 

其中给出:

CREATE TABLE `tablename` (
.... 
.... 
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
... 

现在将其添加到迁移:

'timestamp' => 'timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP' 
-1

你必须设置其他默认值,空例如

​​
+0

它不是空列。但问题是如果默认值设置为current_timestamp(这不是一个问题,因为无论如何我会设置一个需要的值),那么ON UPDATE值也被设置。我不希望在updatind行上修改该值 – 2013-05-14 09:14:15

+0

我不明白你的情况比对不起 – Agrest 2013-05-14 11:26:50

1

对于像我这样的谷歌用户:Yii2现在拥有它out of the box

现在,您可以添加->defaultExpression('CURRENT_TIMESTAMP')到您的定义。