Gentics Portal.Node PHP API
 All Classes Namespaces Functions Variables Pages
MigrationAutoincrement.php
1 <?php
2 /**
3  * Created by JetBrains PhpStorm.
4  * User: andrew
5  * Date: 11/1/12
6  * Time: 3:22 PM
7  * To change this template use File | Settings | File Templates.
8  */
10 {
11  public static function add($table, $column)
12  {
13  if (Yii::app()->db->driverName == 'oci') {
14  $table = Yii::app()->db->getSchema()->getTable($table, true);
15  $sequenceName = $table->name . '_' . substr($column, 0, 3) . '_s';
16  $triggerName = $sequenceName . '_t';
17 
18  $sql = <<<EOD
19 create sequence $sequenceName
20 start with 1
21 increment by 1
22 nomaxvalue
23 EOD;
24  Yii::app()->db->createCommand($sql)->execute();
25 
26  $sql = <<<EOD
27 create trigger $triggerName
28 before insert on "{$table->name}" for each row
29 begin
30 select $sequenceName.nextval into :new."$column" from dual;
31 end;
32 EOD;
33  Yii::app()->db->createCommand($sql)->execute();
34  }
35 
36 
37  }
38 
39  public static function remove($table, $column)
40  {
41  if (Yii::app()->db->driverName == 'oci') {
42  $table = Yii::app()->db->getSchema()->getTable($table, true);
43  $sequenceName = $table->name . '_' . substr($column, 0, 3) . '_s';
44  $triggerName = $sequenceName . '_t';
45 
46  $sql = "drop trigger $triggerName";
47  Yii::app()->db->createCommand($sql)->execute();
48 
49  $sql = "drop sequence $sequenceName";
50  Yii::app()->db->createCommand($sql)->execute();
51  }
52  }
53 
54 }