如何创建在MySQL中始终具有默认值的自动生成列?

如何创建在MySQL中始终具有默认值的自动生成列?,mysql,sql,Mysql,Sql,我想创建一个MySQL列,它总是使用默认值,不允许用户在其中插入值 这是一个creation_date列,我已将其默认值设置为now(),但用户可以在该列中插入任何日期值(如果愿意)。仅当用户未为该列提供任何值时才使用now() 我可以想象一些使用触发器实现目标的方法,但是,这是正确的方法吗 在列上没有设置“受保护”标志或类似的标志吗?没有“受保护”列的概念,没有。您需要使用触发器。关于创建表名(ID INT主键自动增量………)你以前试过什么?请显示源示例您所说的“用户”,这是数据库用户还是最终

我想创建一个MySQL列,它总是使用默认值,不允许用户在其中插入值

这是一个creation_date列,我已将其默认值设置为now(),但用户可以在该列中插入任何日期值(如果愿意)。仅当用户未为该列提供任何值时才使用now()

我可以想象一些使用触发器实现目标的方法,但是,这是正确的方法吗


在列上没有设置“受保护”标志或类似的标志吗?

没有“受保护”列的概念,没有。您需要使用触发器。

关于
创建表名(ID INT主键自动增量………)你以前试过什么?请显示源示例您所说的“用户”,这是数据库用户还是最终用户(客户)?如果最终用户并假设表中的字段为:
creation\u date、transaction\u no、customer\u id、staff\u id
,那么为他们提供的查询不包括“creation\u date”列
插入到表名称中(transaction\u no、customer\u id、staff\u id)
。这样,“创建日期”就不会被填充,只需在表结构中使用触发器,为列
creation\u date
设置默认值即可。然后在插入查询中,不要为创建日期设置任何值,就像跳过查询中的该列一样。这将不允许用户为该列设置任何值,它将只适用于您的默认值。