2012-02-07 123 views
1

向表中插入新数据后,我需要直接选择一些新数据,以便我可以使用它插入另一个表中。MySQL:检索最新插入的数据

我能想到做到这一点的唯一方法是使用'datetime'字段,我在我的行中,但我将如何检索插入的最新日期/时间。

  1. INSERTNOW()值语句datetime

  2. society_select = SELECT socID, creator, datetime FROM societies.society WHERE datetime='[..datetime is the newest...]';

希望是有道理的。谢谢

+0

您能否提供更多关于您想要实现的信息?也许我们可以提出一个更简单的方法... – Aziz 2012-02-07 13:23:04

+0

你提供的方式工作,谢谢。我只是在用户创建一个新社会时需要它,并且它被保存下来,用户被添加到“成员”表中。这是在点击保存按钮时发生的,因此需要立即检索用户创建的新社会,以便将用户添加为成员 – ashley 2012-02-07 14:31:18

回答

1

有很多方法可以做到这一点。

为什么不使用触发器呢?

当触发器创建记录时,您可以获取插入记录的ID。然后您可以进行选择并将新值插入相关表格中。

MYSQL在使用触发器时有大量资源。

http://dev.mysql.com/doc/refman/5.0/en/triggers.html

或者你可以让受灾然后使用它来获取所需的行数导致select语句设置。

获取最后插入的ID?

如果你一次插入一行到数据库中,那么你将能够从MYSQL获取最后插入的ID。这将是您最后插入数据库的记录的主键值。

你基本上会做这样的事情在mysql中:

SET @inserted_id = LAST_INSERT_ID(); 

或者在PHP中可以使用的功能:

mysql_insert_id(&mysql); 

http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html

+0

谢谢,仍然在探索很多功能MySQL再次感谢你,一切正常。 – ashley 2012-02-07 15:02:56

0

排序从大到小的结果通过他们的日期时间订购,并选择其中的第一个。

society_select = SELECT socID, creator, datetime FROM societies.society ORDER BY datetime DESC LIMIT 1;

0

你可以提起自动递增使用。插入数据后,您可以从表中检索列表插入的ID。并使用该ID获取最新的记录。

0

建议的触发器是一个选项。如果你不想使用它,你可以:

  • 添加一个整数主键与auto_increment作为ID和排序DESC(例如,INT(11))
  • 排序插入数据后降上的时间戳列(ofcourse与它的指标)
0

使用trigger。这当然是更清洁的方式。

另一种选择是使用像mysql_insert_id这样的方法。假设你使用PHP。当然其他语言也有相同的方法。

排序不是一个选项(如果在事务中不包含智能) - 如果您在表上有多个写入和读取,这可能会变得非常难看。