Add -u parameter to goctl model to exclude specific fields from UPDATE operations
Author: cht870422Created Aug 25, 2025Updated Sep 3, 2026
Labelsstale
需求描述:
当前 goctl model 生成工具支持 -i参数来配置 INSERT 时忽略的字段(如自动填充字段),但缺少对应的 -u参数来配置 UPDATE 时不可更新的字段(如创建时间、创建者等只写一次的字段)。
使用场景:
• 创建时间 (c_time)、创建者 (c_by) 等字段应该在 INSERT 时设置,但 UPDATE 时不应该被修改
• 类似审计字段需要保护,防止通过更新操作被意外修改
建议语法: goctl model mysql datasource -url="..." -table="table_name" -dir=./model
-i="up_time,up_by" \ # INSERT 忽略的字段
-u="c_time,c_by" # UPDATE 排除的字段
预期行为:
• 使用 -u参数指定的字段不会出现在 UPDATE 语句的 SET 子句中
• 生成的 rowsWithPlaceHolder会自动排除这些字段
Source: zeromicro/go-zero