0

我用这个语句在我的表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列中的数据时会出现此错误?

4

1 回答 1

1

INSERT语句用于向表中添加新行。看起来您想要做的是在现有行中向您刚刚创建的列添加值。您可以使用语句UPDATE不是语句来执行此操作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在您的条件不匹配的所有行中。

于 2014-10-23T16:47:06.800 回答