我有一个名为“customers”的mysql表,其中包含以下字段:id(主键,int,自动递增)名称(varchar(20),默认值=“”)姓氏(varchar(20),默认值=“”)年龄(int,默认值=null)城市(varchar(20),默认值=“”)问题很简单:如果我必须更新“name”和“姓氏”,我希望该记录的所有其他字段都返回到它们的起始值,而不明确声明它们。有没有什么指令能自动做到这一点?谢谢大家!:)
2ledvvac1#
有没有什么指令能自动做到这一点?不,mysql支持 ON UPDATE 列定义中的子句仅用于datetime和timestamp(并且仅用于将列设置为当前日期)。其他数据库甚至不支持 ON UPDATE 因此,您需要显式地分配要在 update 声明。通过使用 DEFAULT 作为目标值,因此不需要记住每个默认值。
ON UPDATE
update
DEFAULT
update customers set name = 'foo', surname = 'bar', age = default, city = default where id = 1
无关注意:存储年龄不是一个好的做法,因为此信息会随着时间的推移而变化。相反,您可以存储出生日期,并在需要时动态计算年龄(或使用视图)。
1条答案
按热度按时间2ledvvac1#
有没有什么指令能自动做到这一点?
不,mysql支持
ON UPDATE
列定义中的子句仅用于datetime和timestamp(并且仅用于将列设置为当前日期)。其他数据库甚至不支持ON UPDATE
因此,您需要显式地分配要在update
声明。通过使用DEFAULT
作为目标值,因此不需要记住每个默认值。无关注意:存储年龄不是一个好的做法,因为此信息会随着时间的推移而变化。相反,您可以存储出生日期,并在需要时动态计算年龄(或使用视图)。