MySQL插入,每个相同ID的增量列值

mdnba50

我有这张桌子 relations

ID    Name    Parent   Pos
================================
1     Alex       1      1
2     Mary       1      2
3     John       1      3
4     Doe        2      1
5     Bob        2      2
6     Kate       2      3

insert查询之前,我先选择ParentID并获取最后一个Pos位置,然后再加1。

$data = $DB2->query("SELECT * FROM relations 
            WHERE Parent='1' ORDER BY `Pos` DESC LIMIT 1");

            $results = $data->result_array();

            foreach($results as $row) {
                $pos = $row['Pos'];  //last position

            }


$pos = $pos + 1;
    $DB2->query("INSERT IGNORE INTO relations (Name,Parent,Pos) VALUES('test',1,'$pos')");

有没有一种方法可以使PosParent自动增加还是我目前的方式最有效?

戈登·利诺夫(Gordon Linoff)

如果您不担心竞争条件(同时发生两次插入),则可以在一条语句中执行此操作:

INSERT IGNORE INTO relations (Name, Parent, Pos) 
    SELECT 'test', 1, MAX(pos) + 1
    FROM relations
    WHERE Parent = 1;

但是,我绝对建议您在上拥有一个唯一索引(Parent, Pos),并删除IGNORE-如果发生错误,您想知道它。

您可以通过使用触发器进行分配来使其更安全。您也可以锁定表,以便在特定插入期间不会发生其他插入。这是一项昂贵的操作,如果事务负担很重,可能会减慢系统速度。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

mysql中基于相同ID的增量列值

来自分类Dev

MySQL列值使用增量ID

来自分类Dev

MySQL我可以在自动增量列中插入特定ID

来自分类Dev

mysql中的insert语句为每个插入增量

来自分类Dev

范围中每个不同值的唯一增量ID

来自分类Dev

如何在相同的 id 但不同的列值下插入值?

来自分类Dev

对于mysql中的每个多次插入查询,保持第一个log_ID与parent_ID相同

来自分类Dev

如何从mysql获取最近插入的自动增量ID

来自分类Dev

MySQL:使用自动增量ID插入新数据时出错

来自分类Dev

将值插入高于当前自动增量/标识值的自动增量/标识列

来自分类Dev

无法将NULL值插入“自动增量主键”列

来自分类Dev

为不同的id MySQL插入相同的行

来自分类Dev

如何将数组值插入具有相同ID的mysql中

来自分类Dev

对于具有相同ID列表值且不在其他列中的每个记录

来自分类Dev

未插入自动增量ID

来自分类Dev

通过在列中插入相同的值来“插入 SQL”

来自分类Dev

MySQL更新基于其他列值的增量列

来自分类Dev

在mysql中将行值设置为列值时要检查相同的id

来自分类Dev

增量插入到SQL列

来自分类Dev

将相同的自动增量值插入同一表的另一列

来自分类Dev

自动增量重置为0,但不能插入id = 0的值。值> 0不会发生

来自分类Dev

列值增量更新

来自分类Dev

Atuto 增量列不会增加 mysql 表中的 Id 编号

来自分类Dev

MySQL-检查VARCHAR列的增量是否缺少值

来自分类Dev

MySQL SELECT基于不同列中的值的增量索引

来自分类Dev

如何将每个div的输入值乘以相同的id

来自分类Dev

MySQL增量列

来自分类Dev

根据ID列表为多个记录插入相同的值

来自分类Dev

根据ID列表为多个记录插入相同的值

Related 相关文章

热门标签

归档