2015-10-27 50 views
0

我需要在兩個表中插入相同的時間戳。在兩個表中插入相同的時間戳

這裏是什麼,我試圖做一個例子:

INSERT INTO table1 (id, value, time) VALUES (NULL, 'test', CURRENT_TIMESTAMP) 
INSERT INTO table2 (id, time, user) VALUES (NULL, CURRENT_TIMESTAMP, 'username') 

基本上,問題是,它不能保證從表1的時間將是從表2完全相同。

我,淡然的,選擇一個時間戳,然後在這個僞代碼中使用它在INSERT語句,如:

$time = $db->query("SELECT CURRENT_TIMESTAMP")->fetch_rows()[0]; 
$db->query("INSERT INTO table1 (id, value, time) VALUES (NULL, 'test', '".$time."')"); 
$db->query("INSERT INTO table2 (id, time, user) VALUES (NULL, '".$time."', 'username')"); 

我的問題是:有沒有更好的解決辦法?

感謝

+0

將它分配給一個變量是可以的(你也可以在mysql中做到這一點) –

回答

0

總有一個更好的解決方案。

但是,如果您的應用程序真的依賴於相同的時間戳,那麼您最好在您的PHP代碼中確定它,然後在您的INSERT聲明中使用它。

$time = date('Y-m-d H:i:s'); 
$db->query("INSERT INTO table1 (id, value, time) VALUES (NULL, 'test', '".$time."')"); 
$db->query("INSERT INTO table2 (id, time, user) VALUES (NULL, '".$time."', 'username')"); 

如果有必要,您可以從數據庫服務器上檢索時間戳,就像您的示例所示。

還有其他的解決方案,比如使用觸發器等,但在大多數情況下,這隻會讓它複雜化,而沒有真正的好處。

+0

這很有效,它絕對更好。我還可以在unix時間使用'FROM_UNIXTIME',因爲時間戳有時很奇怪,並且不像您那樣接受有效的日期格式。 – Guichaguri