2013-05-14 3 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', 
     )); 
} 

이것은 마이그레이션을위한 업 기능입니다. u가 새로운 테이블을 생성하기위한 쿼리임을 알 수 있습니다. 기본적으로 YII는 CURRENT_TIMESTAMP와 동일한 시간 소인 C 럼의 기본값을 작성하고 추가 매개 변수를 작 성하여 ON UPDATE CURRENT_TIMESTAMP와 같게 설정합니다.YII 테이블 열의 마이그레이션 및 bu 기본값

타임 스탬프에 현재 값이 필요하지 않으므로 업데이트 행에서이 열을 업데이트 할 필요가 없습니다. 내가 뭘해야 돼? 그런데, u는 당신은 예를 들어 널 (null) 다른 기본 값을 설정해야합니다 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

를 사용

public function up(){ 

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

null 열이 아닙니다. 하지만 문제는 기본 값이 current_timestamp로 설정된 경우입니다 (문제의 원인이 아니기 때문에 필요한 값을 설정하게됩니다). 그러면 ON UPDATE 값도 설정됩니다. updatind 행에서 값을 수정하고 싶지 않습니다. –

+0

죄송합니다. – Agrest

1

나를 좋아하는 Google 사용자의 경우 : Yii2는 이제 out of the box입니다.

이제 ->defaultExpression('CURRENT_TIMESTAMP')을 정의에 추가 할 수 있습니다.