我正在尝试使用现有主键将自动递增id添加到现有表中
这是我的密码
表代码的初始迁移
public function up()
{
Schema::create('books', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->string('ISBN')->index();
$table->string('name')->index();
$table->string('publisher');
$table->string('level_levelName')->index();
$table->string('provider_providerName')->index();
$table->string('category_categoryName')->index();
$table->text('description');
$table->timestamps();
$table->primary('ISBN');
$table->foreign('provider_providerName')->references('providerName')->on('providers')->onDelete('cascade')->onUpdate('cascade');
$table->foreign('level_levelName')->references('levelName')->on('levels')->onDelete('cascade')->onUpdate('cascade');
$table->foreign('category_categoryName')->references('categoryName')->on('categories')->onDelete('cascade')->onUpdate('cascade');
});
}
将自动增量ID添加到现有表代码
public function up()
{
Schema::table('books', function (Blueprint $table) {
$table->bigIncrements('id');
});
}
我试图做的是向这个现有表添加一个自动递增的id,但它给了我这个错误
SQLSTATE[42000]: Syntax error or access violation: 1068 Multiple primary keys defined (SQL: alter table
`books` add `id` bigint unsigned not null auto_increment primary key)
有人能帮帮我吗?我不想删除表的主键,我只想添加另一个自动递增的id,它不是主键,但可以是唯一键
不能使用bigIncrements
,因为这样会试图将其创建为主键。您可以尝试以下方法:
$table->bigInteger('id', true, true)->index();
根据biginger
(公共函数biginger($column,$autoIncrement=false,$unsigned=false))
的定义,第二个值用于自动递增,第三个值用于有符号/无符号。从Mysql Innodb:Autoincrement非主键中,必须对自动增量键进行索引。
我想向包含数据的现有表中添加一个新的自动递增主列。我该怎么做? 我首先添加了一列,然后尝试添加一个序列,之后我就不知道如何插入该列并将其作为主键。
问题内容: 我想向具有数据的现有表中添加一个新的自动增量主列。我怎么做? 我先添加了一个列,然后尝试添加一个序列,此后,我迷失了如何插入该列并将其作为主键。 问题答案: 假设您的表被调用t1,您的主键被称为idFirst,创建序列: 然后创建一个触发器,该触发器在插入时增加:
问题内容: 我需要创建一个基本上只保留索引列表的表。因此,我创建了一个表,其中只有一个自动递增的列,称为“ id”。但是,我似乎无法向该表隐式添加自动递增的值。 我知道通常在表中有这样一列(不仅有此列)时,您可以执行以下操作: 插入表(col1,col2 …)值(val1,val2 …) 而且,如果您不指定自动递增的列,它将自动获取一个值。但是,类似: 插入表()值()插入表插入表() 等等。所有
问题内容: 我正在尝试更改没有主键或auto_increment列的表。我知道如何添加主键列,但我想知道是否有可能自动将数据插入主键列(我已经在数据库中有500行,并希望为其提供ID,但我不想手动执行) 。有什么想法吗?非常感谢。 问题答案: 在我的测试中,添加列的语句可以正常工作: 在为测试目的而创建的临时表上,以上语句创建了该 列,并为该表中的每个现有行插入了自动递增值,从1开始。
我想用自动增量id向firebase数据库添加一个新用户,如下截图所示: 我试过:
问题内容: 我有多个结构相同的数据库,有时会在其中复制数据。为了保持数据完整性,我使用两列作为主键。一个是数据库ID,它链接到包含有关每个数据库的信息的表。另一个是表键。它不是唯一的,因为它可能有多个行,且此值相同,但database_id列中的值不同。 我打算将这两列变成一个联合主键。但是,我也想将表键设置为自动递增-但基于database_id列。 EG,使用以下数据: 如果我要添加包含dab