应将相同的自动增量ID插入到插入查询中

时间:2015-09-08 12:30:01

标签: php html mysql

我需要你们的帮助。我不知道这是否可能。

在PHP中,当我将新查询插入数据库ID值时将自动增加。我在该查询中还有一个变量,即parentID

运行查询时,parentID应等于自动增量ID。

我尝试了mysqli_insert_id($conn);这个功能。获取最后一个ID。添加一个具有该值的值,然后将该值分配给parentID,然后插入数据库。

但是某种时候可能会出现隔离问题。所以任何一个指南提供一些其他解决方案来避免隔离问题。隔离意味着当我尝试插入时,我从db获得了最后一个ID。现在将该值分配给ParendID变量。然后我尝试插入到DB中。假设可能需要几分钟。在这几分钟内,其他一些人可能会插入自己的问候。那个时候我的最后一个身份证会有所不同。所以我插入错误的parendID值。

请任何人帮我解决这个问题.. !!

<?php
  //My connection 
  $last_id = $conn->insert_id; //get last ID from DB
  $parent_id = $last_id + 1;

  $sql = "INSERT INTO MyGuests (firstname, lastname, email, ParentID)
           VALUES ('John', 'Doe', 'john@example.com', $parent_id)";

  if ($conn->query($sql) === TRUE) {
  echo "New record created successfully.";
  } else {
   echo "Error: " . $sql . "<br>" . $conn->error;
  }

?>

首先,我获得LastID,然后使用该值添加One。然后我将插入到DB中。而不是这种方法,在查询本身,直接,可以给出任何其他可能的解决方案,以指定父ID等于该字段的当前ID?

1 个答案:

答案 0 :(得分:1)

这可以在触发器的帮助下完成, 你需要做的就是将id的新值复制到parentID&#34; AFTER&#34;插入

CREATE TRIGGER ins_parentID 
AFTER INSERT ON MyGuests
FOR EACH ROW SET 
NEW.ParentId = NEW.ID;

代码应该看起来像这样(这个没有被测试)