0

我有一个带有自动增量字段的 SQL 表。我知道人们问过如何在插入发生后检索“最后一个条目”的 ID,我知道该怎么做。我想要做的是将自动生成的字段复制到同一张表的第二列中 - 我如何修改我的插入代码来做到这一点:

mysql_query("INSERT INTO `tags` (`tid`,`tagid`,`tagname`) VALUES('','INSERTED.ID','{$tagname}')");

我想这样做的原因是因为我希望能够使两行彼此相等。IE 如果两个不同的标签(具有不同的唯一 ID)具有相同的 tagid,那么我可以在其他地方使用“tagid”引用作为唯一标识符并循环浏览它们。我还可以保留关于哪个标签是父标签的知识——因为它将具有与“tagid”相同的“tid”。

我有一个标记事件的系统;但有时我拼错了一个标签……所以我不想纠正所有的错误,而是想通过允许拼写错误的标签被连接起来并以与正确标签相同的方式对待来使我的系统防错。

感谢您的帮助-即使这意味着以完全不同的方式进行操作。

谢谢,

4

3 回答 3

0

您必须更改表以将字段设置为自动增量。然后我相信当你插入任何东西时它会增加。还有这个声明称为重复... http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

于 2012-11-03T17:54:31.530 回答
0

您可以存储以前的 id,然后在查询字符串中使用它。

$previous_id = mysql_insert_id();

mysql_query("INSERT INTO `tags` (`tid`,`tagid`,`tagname`) VALUES('','$previous_id','{$tagname}')");
于 2012-11-03T17:55:10.013 回答
0

2个选项:

1)你可以使用LAST_INSERT_ID()mysql函数,但是在第二次查询中,不一样。

SELECT LAST_INSERT_ID();

2)在表中定义一个插入触发器,然后当您插入时,触发器“触发”并在触发器中执行操作。

 CREATE TRIGGER tag_tid BEFORE INSERT ON tags
 FOR EACH ROW NEW.tid = NEW.id;

注意:短创建者,请参阅链接中的更多内容。

于 2012-11-03T18:06:53.500 回答