色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql時間 序列號生成id

錢琪琛2年前11瀏覽0評論

在MySQL中,使用時間序列號生成ID是一種較為常見的方式。這種方法可以在保證唯一性的同時,又能夠很好地保證查詢和排序的效率。

CREATE TABLE `user` (
`id` bigint unsigned NOT NULL COMMENT 'ID',
`name` varchar(32) NOT NULL COMMENT '姓名',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶表';

在上述的user表中,我們要生成一個唯一的ID作為主鍵。

ALTER TABLE `user` ADD `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間';

在表中添加一個datetime類型的create_time字段,用于記錄數據生成的時間。

ALTER TABLE `user` ADD `seq` bigint unsigned NOT NULL DEFAULT '0' COMMENT '時間序列號';

在表中添加一個bigint類型的seq字段,用于存儲時間序列號。

delimiter ;;
CREATE TRIGGER user_insert BEFORE INSERT ON user
FOR EACH ROW BEGIN
SET new.seq = (UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP('2021-01-01 00:00:00'))<< 22;
END;;
delimiter ;

上述代碼是一個MySQL觸發器,用于在每次插入數據時自動生成時間序列號。觸發器中的時間起點為2021-01-01 00:00:00,左移22位是為了將時間序列號放在bigint的高位上。

實例:

INSERT INTO `user` (`id`, `name`) VALUES (1, '張三');

執行上述代碼后,我們可以在數據表中查看到生成的ID和時間序列號:

id  name    create_time             seq
1   張三     2021-08-30 08:58:26     2031967073813504

上述的時間序列號是由當前時間計算得到的,如果需要更加精準的時間戳可以使用PHP的microtime()函數,將時間序列號計算出來后插入數據庫中即可。