我需要你们的帮助。我不知道这是否可能。
在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?
答案 0 :(得分:1)
这可以在触发器的帮助下完成, 你需要做的就是将id的新值复制到parentID&#34; AFTER&#34;插入
CREATE TRIGGER ins_parentID
AFTER INSERT ON MyGuests
FOR EACH ROW SET
NEW.ParentId = NEW.ID;
代码应该看起来像这样(这个没有被测试)