MySQL中通用复用字段设计

发布于:2024-02-28 ⋅ 阅读:(64) ⋅ 点赞:(0)

一、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字段也不会被更新。只有在记录内容确实发生变化的情况下,这个时间戳才会被刷新。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到