0
我需要創建一個數據庫來存儲一些可以每毫秒出現一次的日誌。 我創建瞭如下表:MySQL以毫秒爲單位存儲TIMESTAMP
CREATE TABLE `log` (
`DataEvento` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
`CodiceEvento` int(11) NOT NULL,
`IdApplicativo` int(11) NOT NULL,
PRIMARY KEY (`DataEvento`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
和存儲過程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `ScriviEvento`(IN evt_id INT, IN app_id INT, IN evt_descr TEXT)
BEGIN
DECLARE timestamp_now TIMESTAMP(3) DEFAULT NOW(3);
INSERT INTO log (DataEvento, CodiceEvento, IdApplicativo) VALUES (timestamp_now, evt_id, app_id);
IF (LENGTH(evt_descr) > 0) THEN
INSERT INTO descrizionelog (DataEvento, DescrizioneEvento) VALUES (timestamp_now, evt_descr);
END IF;
END
手動插入一些條目我得到正確的時間戳和毫秒,但如果我創建一個線程 與睡眠( 1)我有重複鍵錯誤,如果我按在工作臺上
CALL(1, 0, '');
快速執行按鈕同樣的情況,是否有解決方法這(不包括使用自動增量ID),還是我做錯了什麼?
爲什麼時間戳不會是唯一的?此外:如果我使用自動增量這是溢出限制? – IssamTP
@IssamTP。 。 。如果溢出是一個問題,你可以使用'bigint'作爲'LogId'。 –