Mysql 每次创建时都会有不同的增量
我有这张桌子。我想用不同的id创建项目,但它必须在同一个表中,所以我创建了两个不同的id类型Mysql 每次创建时都会有不同的增量,mysql,laravel,auto-increment,Mysql,Laravel,Auto Increment,我有这张桌子。我想用不同的id创建项目,但它必须在同一个表中,所以我创建了两个不同的id类型 |--------------------------------------| |id | idtype1 | idtype2 | Project_name | |--------------------------------------| 如果我用idtype1创建一个项目,idtype1会增加,但idtype2仍然会增加 |-----------------------------------
|--------------------------------------|
|id | idtype1 | idtype2 | Project_name |
|--------------------------------------|
如果我用idtype1创建一个项目,idtype1会增加,但idtype2仍然会增加
|--------------------------------------|
|id | idtype1 | idtype2 | Project_name |
|--------------------------------------|
| 1 | 1 | 0 | name1 |
| 2 | 2 | 0 | name2 |
|--------------------------------------|
但是如果我用idtype2创建一个项目,它会做相反的事情
|--------------------------------------|
|id | idtype1 | idtype2 | Project_name |
|--------------------------------------|
| 1 | 1 | 0 | name1 |
| 2 | 2 | 0 | name2 |
| 3 | 0 | 1 | name3 |
| 4 | 0 | 2 | name4 |
|--------------------------------------|
这可能吗?那怎么做呢?听起来您想要三列:id、idtype1和idtype2都自动递增?如果是这样,您可以在迁移中使用$table->increments('idtype1')定义它;如上所述。但是,值得注意的是,所有三列都将始终具有彼此相同的值,因此您可能需要重新思考为什么需要所有三列 idtype1和idtype2非常模糊,没有任何含义。这些代表什么?如果你能以他们的名义表达他们所代表的东西,事情就会有所改善 这些ID是其他表中相关记录的ID吗?如果是这样,您应该使用其他表名来命名它们,例如type_id或address_id
然后,您还可以研究设置外键信息,以便数据库了解这种关系,并帮助您增强完整性。此处不能执行自动递增,因为有时idType1需要递增,而IDType2不需要递增。因此,在迁移过程中,您需要:
$table->Integer('idType1');
$table->Integer('idType2');
注册新项目时,根据需要在关联列中计算+1
编辑#1
希望有帮助。我不知道你在说什么。看看我是否解释了我使用idtype的原因,因为它使问题变得更加混乱。另外,如果我把自动增量,它将增加价值,每次我创建,但相反,我只希望他们在特定的时间只增加。idtype只是一个替换名称,所以这个问题有意义。我在我的实际表中没有使用idtype。“如果我解释我使用idtype的原因,它会使问题更加混乱。”这表明您的解决方案使事情变得比需要的更复杂。我认为这个问题是一个x/y问题。您正试图以特定的方式解决一个复杂的问题,并在解决方案的某个方面寻求帮助。相反,重新思考这个问题,寻找更好的解决方案。具体到这个问题,如果您只希望这些字段在某些情况下递增,那么您需要编写代码来做出决定,并在每次insert语句中手动设置值。“您需要编写代码来做出决定,并在每次insert语句中手动设置值”这就是我在这里的原因
if (project_type == 1) {
DB::table('projects_controller')->increment('idType1');
} elseif (project_type == 2) {
DB::table('projects_controller')->increment('idType2');
} etc etc