2012-02-07 121 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。當然其他語言也有相同的方法。

排序不是一個選項(如果在事務中不包含智能) - 如果您在表上有多個寫入和讀取,這可能會變得非常難看。