默认值在 phpmyadmin/mysql 数据库中不起作用
Posted
技术标签:
【中文标题】默认值在 phpmyadmin/mysql 数据库中不起作用【英文标题】:Default values not working in phpmyadmin/mysql database 【发布时间】:2016-01-23 20:07:37 【问题描述】:我无法让表格接受 "" 或 '' 并使用默认值。它正在插入 NULL 。
我正在直接输入 sql 窗口中尝试这些命令。
INSERT INTO test01 VALUES ("", now(), "");
INSERT INTO test01 VALUES ('', now(), '');
但两者都只是在第三列中给出 NULL。该结构设置为非空,默认值为“yes”。 (不带引号)。
这是结构的屏幕截图。你可以看到 NULL 没有被选中。 http://garryjones.se/extras/so3.png
【问题讨论】:
我不认为那些插入会将 null 放入第三列,因为第三列不能设置为 null。 【参考方案1】:仅当 no 值被插入/更新时,默认值才有效。如果您将其显式设置为空字符串(NOT 与 NULL
值相同),那么它将在列中以空字符串结束。而不是上面的代码,您应该完全从 INSERT
语句中删除该列:
INSERT INTO test01 (t1, t2) VALUES ('', now())
【讨论】:
我认为第二列也可以跳过,因为更新当前时间戳【参考方案2】:其他已经解释了原因,我在这里再补充一点,您也在更新时使用当前时间戳,因此也不需要使用此列。
INSERT INTO test01 (t1) VALUES ('')
【讨论】:
谢谢。如果我有 4 列,我想在第 4 列插入一个值,在第 3 列插入一个默认值。 @garry-jones 如果您需要在第四列中自定义值而不是您只需将插入写入表(col4)值('val4');在这种情况下不需要使用其他列。 如果你想插入第二列而不是添加 col2 ... col1 和 col3 自动更新 @garry-jones 谢谢。如果我有 4 列,我想在第 4 列中插入一个值,在第 3 列中插入一个默认值,该怎么办?我试过这个 INSERT INTO test01 VALUES (", now(), ,1); 但它没有用 - 在活动表中有 25 列,用户不会输入一些值,所以我需要那些为“是”或“否”。我想我可以通过使用默认值来控制插入语句。 重新设计数据库,这样您的表就不会包含一堆未使用的列。除此之外,您需要命名要插入的列。如果您希望数据库使用默认值,那么您需要将它们从列列表中排除。停止尝试使用INSERT INTO TABLE VALUES
并使用INSERT INTO TABLE (<column names>) VALUES (...)
【参考方案3】:
您可以使用 DEFAULT 关键字:INSERT INTO test01 VALUES ("", now(), DEFAULT);
【讨论】:
以上是关于默认值在 phpmyadmin/mysql 数据库中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
ValueError:无法添加 *:实例在数据库“默认”上,值在数据库“无”上