Oracle deals with auto_increment by using sequences and triggers:
create sequence test_seq start with 1 increment by 1 nomaxvalue; create trigger test_trigger before insert on test for each row begin select test_seq.nextval into :new.id from dual; end; /
And MySQL is just an auto_increment keyword on the end of a column declaration:
CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) )
So I created a simple Autoincrement class:
/protected/migrations/Autoincrement.php
Which I included in the migration file for a schema. This class will handle checking the driver and executing the appropriate sql.
Autoincrement::up('USERS', Yii::app()->db->driverName); Autoincrement::down('USERS', Yii::app()->db->driverName);
What needs to be remembered here is to add a “sequenceName” to the model class, that is of the form “TABLENAME_SEQ”.