簡體   English   中英

MySQL 5.6在運行查詢或提交事務時,是否會設置插入/更新上的時間戳記值?

[英]MySQL 5.6 Does value of timestamp on insert/update get set when query was ran or when transaction was committed?

我只是好奇而已,我查看了文檔: https : //dev.mysql.com/doc/refman/5.6/en/datetime.html

但是並沒有具體說明是否根據查詢的運行時間或提交事務的時間設置了時間戳的值:

CREATE TABLE some_schema.some_table (
    id int(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    some_field VARCHAR(50) DEFAULT NULL,
    last_changed_ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
);

START TRANSACTION;
INSERT INTO some_schema.some_table (some_field) VALUES ("Foo");
INSERT INTO some_schema.some_table (some_field) VALUES ("Bar");
COMMIT;

而且雖然顯然這是同一時間,因為它運行得如此之快(我理解的時間last_changed_ts為微秒),想象一下運行1萬億或插入某些內容,它們的last_changed_ts值是否相同,因為它們都在一個事務中提交,或者基於INSERT語句的運行時間,它們之間會有區別嗎?

-實際上,在寫完所有內容之后,我意識到僅設置一個簡單的python腳本來啟動事務,插入,休眠,再次插入並再次檢查自己是微不足道的。 我已經把所有內容寫完了,在谷歌搜索時找不到快速答案,所以我離開了,也許其他人想把他們有趣的2美分投入其中,如果沒有,我會將我的簡單測試結果發布到即將到來的一天。

時間戳是每個插入查詢開始執行查詢的時間戳。 如果在單個插入語句中插入大量行,則所有行的時間戳都將相同,並將成為查詢開始執行的時間戳。

提交事務不會更改值,這很明顯,因為可以在提交之前讀回插入的行,並且由於提交了插入而隨后更改了它們的值也沒有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM