0
ミリ秒ごとに発生する可能性のあるログを保存するデータベースを作成する必要があります。ミリ秒でTIMESTAMPを格納するMySQL
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
。 。もしオーバーフローが問題であれば 'LogId'に' bigint'を使うことができます。 –