我已经在我的表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
列中的数据时出现此错误?
答案 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
保留在条件不匹配的所有行中。