SQL自动增量ID

时间:2012-11-03 17:49:51

标签: php sql tags

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

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

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

我有一个标记事件的系统;但有时我错过拼写标签......所以我不想纠正所有的错误,而是希望通过允许拼写错误的标签与正确的标签相同的方式来处理我的系统错误。

感谢您的帮助 - 即使这意味着以完全不同的方式这样做。

谢谢,

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

$previous_id = mysql_insert_id();

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

答案 2 :(得分:0)

2个选项:

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

SELECT LAST_INSERT_ID();

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

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

注意:简短的创建者,请参阅链接中的更多信息。