一、MySQL数据库表设计
DROP TABLE IF EXISTS `tb_loan_transfer_record`;
CREATE TABLE `tb_loan_transfer_record` (`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',`loan_rerord_id` bigint(20) NOT NULL COMMENT '借款记录id',`loan_id` bigint(20) NOT NULL COMMENT '借款id',`borrower_id` bigint(20) NOT NULL COMMENT '借款人id',`bidder_id` bigint(20) NOT NULL COMMENT '放款人id',`status` int(4) NOT NULL COMMENT '转账请求状态,0为转账中,-1为失败,1为成功',`success_time` timestamp(0) DEFAULT NULL COMMENT '转账成功时间',`create_emp` varchar(128) DEFAULT NULL COMMENT '创建人',`update_emp` varchar(128) DEFAULT NULL COMMENT '操作人/工号',`inserttime` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间',`updatetime` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '更新时间',`isactive` tinyint(1) DEFAULT 1 COMMENT '逻辑删除:1-未删除(true) 0-已删除(false)',PRIMARY KEY (`id`) USING BTREE,UNIQUE INDEX `unique_idx_bid_id`(`loan_rerord_id`) USING BTREE,INDEX `idx_listing_id`(`loan_id`) USING BTREE,INDEX `ix_inserttime`(`inserttime`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '转账记录表' ROW_FORMAT = Dynamic;
问题1:
Mysql数据库设置update_date字段为 ON UPDATE CURRENT_TIMESTAMP,仅当字段值内容发生改变时,才会更新记录的时间吗?
是的,当在MySQL数据库中为某个字段(例如update_date)设置 ON UPDATE CURRENT_TIMESTAMP 时,这意味着每当该行数据中的任何字段发生更新时,如果当前执行的UPDATE语句更改了至少一个字段的值,则update_date字段将自动被设置为执行UPDATE操作时的当前时间戳。
换句话说,如果执行了一个UPDATE语句,但没有更改任何实际字段的值(即所有字段的新值与旧值相同),即使UPDATE执行成功,设置了ON UPDATE CURRENT_TIMESTAMP的update_date字段也不会被更新。只有在记录内容确实发生变化的情况下,这个时间戳才会被刷新。