sql—当用某个值更新记录时,如何将mysql表中的字段重置为默认值?

xnifntxz  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(335)

我有一个名为“customers”的mysql表,其中包含以下字段:
id(主键,int,自动递增)
名称(varchar(20),默认值=“”)
姓氏(varchar(20),默认值=“”)
年龄(int,默认值=null)
城市(varchar(20),默认值=“”)
问题很简单:
如果我必须更新“name”和“姓氏”,我希望该记录的所有其他字段都返回到它们的起始值,而不明确声明它们。
有没有什么指令能自动做到这一点?
谢谢大家!:)

2ledvvac

2ledvvac1#

有没有什么指令能自动做到这一点?
不,mysql支持 ON UPDATE 列定义中的子句仅用于datetime和timestamp(并且仅用于将列设置为当前日期)。其他数据库甚至不支持 ON UPDATE 因此,您需要显式地分配要在 update 声明。通过使用 DEFAULT 作为目标值,因此不需要记住每个默认值。

update customers 
set
    name = 'foo',
    surname = 'bar',
    age = default,
    city = default
where id = 1

无关注意:存储年龄不是一个好的做法,因为此信息会随着时间的推移而变化。相反,您可以存储出生日期,并在需要时动态计算年龄(或使用视图)。

相关问题