【发布时间】:2020-01-02 11:43:05
【问题描述】:
所以我有一个表 A,其中包含一个 Z 列,其默认值设置为字符串“多样化”。 查询来自一个 php 脚本,该脚本从 jqueryAJAX 发布请求中获取数据。
如果查询收到用于插入/更新此列的空字符串,我希望我的数据库将 Z 列的相应字段设置为默认值。
我真的很想使用 mysql 功能来实现这一点,而无需使用任何更多自定义编码的 php 逻辑。 我已经在此处阅读了有关使用 WHEN/THEN 逻辑的信息: Set default value if empty string is passed MySQL 和这里 MySQL update CASE WHEN/THEN/ELSE
但这些并没有解释我如何永久配置表/列,使其不仅在接收 NULL 值时公开这种“默认”行为,而且在接收空字符串时。
此外: 如果我将一列设置为 NOT NULL 并为该列添加默认值,如果我尝试插入/更新到 NULL 值,查询是否会失败,或者数据库是否会翻转为默认值?
【问题讨论】:
-
有些事情是出于正当理由。如果
MySQL列设置为“多样化”作为默认值,并且在INSERT/UPDATE用户想要使用空白/空值,那么引擎必须以这种方式工作。您不想在PHP端删除或设置默认值“多样化”是没有正当理由的。这是解决问题的最简单方法。