MySQL中通用复用字段设计

本文详细介绍了如何在MySQL数据库中设计贷款转账流水表,包括字段定义,特别是关于`update_date`字段如何在ONUPDATECURRENT_TIMESTAMP下自动更新。同时讨论了业务系统通用字段如创建人、操作人等的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、MySQL数据库表设计

1、以借款转账流水表设计为例以示说明

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

1. 业务系统通用字段

  `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)'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinkingcao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值