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'。 –