相关疑难解决方法(0)

批量插入并获取返回的 ID Laravel

我有一个这样的数组:

 0 => array:2 [
    "name" => "Data1"
    "type" => "value1"
  ],
 1 => array:2 [
    "name" => "Data2"
    "type" => "value2"
  ]
Run Code Online (Sandbox Code Playgroud)

我想在数据库中的单个查询中插入它们并检索它们的 id 而不需要任何额外的查询。

到目前为止我已经尝试过 insertGetId

MyModel::insertGetId($array)
Run Code Online (Sandbox Code Playgroud)

但我注意到它插入了大量行但返回了最后一个 id。

php mysql laravel

5
推荐指数
1
解决办法
6097
查看次数

如何锁定InnoDB表以防止在复制该表时进行更新?

我想暂时锁定一个表,以防止其他并发进程对其进行更改.原因是这个表将被复制到临时表,更改,然后被复制回来(实际上删除了原始表并重命名了新表).然后在完成所有这些之后,我想解锁表格并希望在锁定恢复期间尝试任何尝试.

我还需要能够从已锁定的表中读取以构建新表.

这是我尝试过的,但它似乎不起作用.

$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, DB_PORT);

$mysqli->autocommit(false)

// create a table to hold parts to keep
$q1 = "CREATE TABLE new_table LIKE my_table;";
$res1 = $mysqli ->query($q1);       

// Lock table to avoid concurrent update issues
$q2 = "LOCK TABLE my_table WRITE;";
$res2 = $mysqli ->query($q2);           

// Insert data to keep into new table   
$q3 = "INSERT INTO new_table SELECT * FROM my_table WHERE some_id IN (SELECT ID FROM table2)";
$res3 = $mysqli ->query($q3);

// drop …
Run Code Online (Sandbox Code Playgroud)

mysql innodb locking

3
推荐指数
1
解决办法
9841
查看次数

标签 统计

mysql ×2

innodb ×1

laravel ×1

locking ×1

php ×1