如何使用组 auto_increment 和 Laravel 迁移创建 MyIsam table
How to create MyIsam table with a group auto_increment with Laravel migrations
使用 Laravel 迁移,有没有办法创建一个 MyISAM table 具有两列主键和其中一个自动递增?
CREATE TABLE animals (
grp ENUM('fish','mammal','bird') NOT NULL,
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (grp,id)
) ENGINE=MyISAM;
在这种情况下,id AUTO_INCREMENT 是相对于 grp 列的值完成的。你会得到这样的东西:
+--------+----+---------+
| grp | id | name |
+--------+----+---------+
| fish | 1 | lax |
| mammal | 1 | dog |
| mammal | 2 | cat |
| mammal | 3 | whale |
| bird | 1 | penguin |
| bird | 2 | ostrich |
+--------+----+---------+
尝试以下操作:
Schema::create('animals', function(Blueprint $table) {
$table->engine = 'MyISAM';
$table->enum('grp', ['fish', 'mammal', 'bird']);
$table->bigIncrements('id'); // no mediumIncrements
$table->char('name', 30);
$table->primary(['grp', 'id']);
});
没有 mediumIncrements
函数,因此使用 bigIncrements
作为下一个最佳选择。
好吧,我成功地完成了两次迁移
1. 创建 table 并像往常一样将 PK 分配给两个字段。
2.新建migration修改id列添加AUTO_INCREMENT属性
create_animals_table:
Schema::create('animals', function(Blueprint $table) {
$table->engine = 'MyISAM';
$table->enum('grp', ['fish', 'mammal', 'bird']);
$table->unsignedBigInteger('id');
$table->char('name', 30);
$table->primary(['grp', 'id']);
});
add_auto_increment_to_animals_table:
Schema::table('animals', function ($table) {
$table->bigIncrements('id')->unsigned()->change();
});
使用 Laravel 迁移,有没有办法创建一个 MyISAM table 具有两列主键和其中一个自动递增?
CREATE TABLE animals (
grp ENUM('fish','mammal','bird') NOT NULL,
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (grp,id)
) ENGINE=MyISAM;
在这种情况下,id AUTO_INCREMENT 是相对于 grp 列的值完成的。你会得到这样的东西:
+--------+----+---------+
| grp | id | name |
+--------+----+---------+
| fish | 1 | lax |
| mammal | 1 | dog |
| mammal | 2 | cat |
| mammal | 3 | whale |
| bird | 1 | penguin |
| bird | 2 | ostrich |
+--------+----+---------+
尝试以下操作:
Schema::create('animals', function(Blueprint $table) {
$table->engine = 'MyISAM';
$table->enum('grp', ['fish', 'mammal', 'bird']);
$table->bigIncrements('id'); // no mediumIncrements
$table->char('name', 30);
$table->primary(['grp', 'id']);
});
没有 mediumIncrements
函数,因此使用 bigIncrements
作为下一个最佳选择。
好吧,我成功地完成了两次迁移 1. 创建 table 并像往常一样将 PK 分配给两个字段。 2.新建migration修改id列添加AUTO_INCREMENT属性
create_animals_table:
Schema::create('animals', function(Blueprint $table) {
$table->engine = 'MyISAM';
$table->enum('grp', ['fish', 'mammal', 'bird']);
$table->unsignedBigInteger('id');
$table->char('name', 30);
$table->primary(['grp', 'id']);
});
add_auto_increment_to_animals_table:
Schema::table('animals', function ($table) {
$table->bigIncrements('id')->unsigned()->change();
});