【BUG记录】记录在使用Navicat建表时遇到的一个坑

博客讲述了在数据库设计中,不建议为字段如create_time和update_time自动设置当前时间戳的原因。当这个选项被勾选时,即使未明确更新这些时间字段,它们也会在任何UPDATE操作后自动更新,导致可能不符合预期的数据记录。例如,简单的UPDATE语句会意外改变update_time,这可能对数据追踪和审计带来问题。

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

BUG引出

之前在公司大部分时间都是在设计数据库,我设计的每张表都会添加create_timeupdate_time这两个datetime类型的字段,在Navicat里每个字段都手贱勾上了根据当前时间戳更新的这个选项
在这里插入图片描述

BUG描述

为什么不建议勾上这个选项呢?勾上这个之后,即使你UPDATE一行数据,没有SET update_time字段,它也会使用当前时间去填充
什么意思呢?比如:

-- 这里我并没有给update_time字段设置now()
UPDATE mytable SET name = '张三'
WHERE id = 1;

经过上面操作你会发现,update_time字段竟然神奇地更新为当前时间!
看下面的图片,我receipt_time、create_time、update_time字段都勾上了根据当前时间戳更新,然后三个字段都自动填充了当前时间
在这里插入图片描述

我是一个java初学者 我让我的deepseek给我安排了一个完成项目的日志以下是针对你的一周高效学习与开发方案,每天聚焦核心任务,确保完成基础功能: --- ### **整体策略** 1. **优先级排序**:先完成客户端、商户端、管理端的**核心功能**(必须完成项),再考虑进阶功能。 2. **简化前端展示**:使用**控制台输入输出**或**HTML+JS纯原生前端**(无需复杂框架),减少学习成本。 3. **模块化开发**:严格遵循MVC分层(Servlet→Service→DAO),边学边实现。 --- ### **每日计划(总计约40小)** #### **Day 1:搭基础环境 + 数据库设计(4小)** 1. **环境配置(1小)** - 安装JDK11、IDEA、MySQL、Navicat/SQLyog。 - 创Gitee仓库,初始化项目结构(按分包要求)。 2. **数据库设计(3小)** - 分析需求,设计结构(至少包含以下): - **用户**(用户ID、账号、密码、钱包余额、角色[客户/商户/管理员]) - **店铺**(店铺ID、名称、地址、状态[营业中/封禁]、审核状态) - **房型**(房型ID、店铺ID、床型、剩余数量、价格、关键词) - **订单**(订单ID、用户ID、房型ID、状态[已预订/已取消]、金额、间) - 使用Navicat,并生成SQL脚本提交到仓库。 --- #### **Day 2:JDBC工具类封装 + 用户登录注册(4小)** 1. **学习JDBC核心(2小)** - 掌握`Connection`、`PreparedStatement`、`ResultSet`的使用。 - 封装`JDBCUtils`工具类(连接池、关闭资源)。 2. **实现用户模块(2小)** - 编写`UserDao`:实现用户注册、登录(密码明文存储即可)。 - 编写`UserServlet`:处理注册/登录请求(通过控制台或HTML单输入)。 - **测试**:通过控制台输入账号密码验证登录逻辑。 --- #### **Day 3:客户端核心功能(4小)** 1. **用户功能(2小)** - 实现**修改个人信息**、**充值钱包**(更新用户余额)。 - 编写`UserService`处理业务逻辑(如充值金额校验)。 2. **店铺浏览与排序(2小)** - 编写`ShopDao`:查询所有店铺(按销量、发布间排序)。 - 在`ShopServlet`中返回店铺列(控制台打印或HTML格展示)。 --- #### **Day 4:商户端核心功能(4小)** 1. **商户入驻与审核(2小)** - 编写`ShopDao`:商户注册(插入店铺,状态为“待审核”)。 - 编写`AdminServlet`:管理员审核店铺(更新店铺状态)。 2. **房型管理(2小)** - 商户登录后,实现**添加房型**、**修改房型信息**(操作房型)。 - 编写`RoomDao`和`RoomServlet`处理请求。 --- #### **Day 5:订单模块 + 退订(4小)** 1. **订房功能(2小)** - 编写`OrderDao`:插入订单记录,减少房型剩余数量。 - 实现**订房**逻辑(检查房型余量、更新钱包余额)。 2. **退订功能(2小)** - 编写`OrderDao`:更新订单状态为“已取消”,返还房型余量。 - 处理退订的金额返还逻辑(需事务控制)。 --- #### **Day 6(周末):管理端 + 联调测试(10小)** 1. **管理端功能(4小)** - 实现管理员**封禁店铺**、**审核充值**(需新增充值审核)。 - 编写`AdminServlet`处理审核逻辑。 2. **联调与测试(6小)** - 通过控制台或简单HTML页面模拟用户、商户、管理员操作。 - 重点测试:订单状态流转、余额变动、审核流程。 - 修复BUG,确保核心流程跑通。 --- #### **Day 7(周末):日志整理 + 代码优化(10小)** 1. **代码规范(4小)** - 安装阿里巴巴插件,修复所有警告(如命名规范、分层问题)。 - 抽离冗余代码为工具类(如日期格式化、金额校验)。 2. **提交与文档(6小)** - 编写项目README.md(说明功能、数据库设计、运行方式)。 - 提交完整代码到Gitee,确保分支清晰、提交记录有意义。 - 整理每日日志(记录学习内容和开发进度)。 --- ### **关键学习资源推荐** 1. **JDBC入门**:B站黑马程序员《JDBC从入门到精通》(2小速通)。 2. **Servlet基础**:菜鸟教程Servlet快速入门(1小掌握请求响应流程)。 3. **原生前端交互**:使用`fetch API`或`XMLHttpRequest`实现前后端通信(MDN文档)。 --- ### **注意事项** 1. **严格分层**:Servlet只负责接收请求和返回结果,业务逻辑交给Service层。 2. **事务控制**:在JDBC中手动管理事务(如订单创开启事务,确保余额和房型同步更新)。 3. **简单前端**:用HTML单+JS发送请求,避免复杂框架(例如用`<form action="/login" method="post">`)。 --- 按此计划执行,你可以在7天内完成核心功能并通过考核!遇到问题优先查阅官方文档,必要再向师兄师姐提问。加油! 我现在完成了第一步 已经在workbench中创了users shop room oders 请告诉我下一步
最新发布
03-29
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值