导致错误代码1364的MySQL条件插入:"字段没有默认值"

时间:2014-10-23 16:32:36

标签: mysql sql sql-insert mysql-error-1364

我已经在我的表quote_entry(已经有几列)中添加了一个新列,其中包含以下语句:

ALTER TABLE quote_entry
ADD overtime_id INTEGER;

现在,我尝试将数据插入到列中,如下所示:

INSERT INTO quote_entry (overtime_id)
select 1
FROM quote_entry 
WHERE overtime=0;

但是这给了我一条错误信息:

Error: Field 'quote_id' doesn't have a default value
SQLState:  HY000
ErrorCode: 1364

我不明白,为什么在我尝试修改overtime_id列中的数据时出现此错误?

1 个答案:

答案 0 :(得分:1)

INSERT语句用于向表中添加新行。看起来您想要做的是在现有行中为刚刚创建的列添加值。您可以使用an UPDATE statement代替INSERT语句执行此操作:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

简单版本没有不必要的选项,如下所示:

UPDATE table_reference SET col_name=expr WHERE where_condition;

在这种情况下,expr将是一个常量表达式 - 1 - 如果您希望将列NULL保留在条件不匹配的所有行中。