如何在使用某些值更新记录时将 MYSQL table 中的字段重置为默认值?
How to reset fields to DEFAULT value in a MYSQL table when update a record with some value?
我有一个名为 "customers" 的 MYSQL table,具有以下字段:
- id(主键,整数,自增)
- 名称(varchar(20),默认值='')
- 姓氏(varchar(20), 默认值='')
- 年龄(整数,默认值=NULL)
- 城市(varchar(20),默认值='')
问题很简单:
如果我必须更新 "name" 和 "surname",我希望该记录的所有其他字段都返回到它们的起始值,而无需明确声明它们。
是否有自动执行此操作的指令?
谢谢大家! :)
Is there any instruction that automatically does this?
没有。 MySQL 仅在日期时间和时间戳的列定义中支持 ON UPDATE
子句(并且仅将列设置为当前日期)。其他数据库甚至不支持ON UPDATE
因此您需要在 update
语句中明确指定要重置的列。您可以通过使用 DEFAULT
作为目标值来稍微简化逻辑,因此您无需记住每个默认值。
update customers
set
name = 'foo',
surname = 'bar',
age = default,
city = default
where id = 1
无关说明:存储年龄不是一个好的做法,因为此信息会随着时间而变化。相反,您可以存储出生日期,并在需要时即时计算年龄(或使用视图)。
我有一个名为 "customers" 的 MYSQL table,具有以下字段:
- id(主键,整数,自增)
- 名称(varchar(20),默认值='')
- 姓氏(varchar(20), 默认值='')
- 年龄(整数,默认值=NULL)
- 城市(varchar(20),默认值='')
问题很简单:
如果我必须更新 "name" 和 "surname",我希望该记录的所有其他字段都返回到它们的起始值,而无需明确声明它们。
是否有自动执行此操作的指令?
谢谢大家! :)
Is there any instruction that automatically does this?
没有。 MySQL 仅在日期时间和时间戳的列定义中支持 ON UPDATE
子句(并且仅将列设置为当前日期)。其他数据库甚至不支持ON UPDATE
因此您需要在 update
语句中明确指定要重置的列。您可以通过使用 DEFAULT
作为目标值来稍微简化逻辑,因此您无需记住每个默认值。
update customers
set
name = 'foo',
surname = 'bar',
age = default,
city = default
where id = 1
无关说明:存储年龄不是一个好的做法,因为此信息会随着时间而变化。相反,您可以存储出生日期,并在需要时即时计算年龄(或使用视图)。