省略插入查询中的列和值?

时间:2011-10-29 22:25:15

标签: mysql sql

我想在表X中插入一行,该表由列A,B和C组成。

如何在不收到错误的情况下执行insert into X (A, B) values (NULL, 'hello');?当我不包括C列时,我收到错误。

我省略了SQL查询中的第三列,A是一个id自动增量。

有没有办法只插入前两列,然后再对第三列进行更新?

5 个答案:

答案 0 :(得分:4)

我不确定你得到的错误,所以这是半猜测。

最有可能的是,您的C列设置为NOT NULL且没有DEFAULT值。这意味着它需要在插入时填充。如果你想跳过在初始插入时设置它的值,你需要为列提供一个默认值,或者允许它为空。

此外,如果您希望列A填充它的auto-inc值,则需要将其保留在插入之外,而不是尝试将值设置为NULL

答案 1 :(得分:2)

如果列C被定义为非空且未定义默认值,则必须将其包含在插入中。

答案 2 :(得分:1)

您的ColumnC可能不可为空。

使用此ALTER命令使其可为空(我在这里假设为int,但使用ColumnC的数据类型):

ALTER TABLE mytable MODIFY ColumnC int NULL;

完成此操作后,您可以从INSERT语句中排除ColumnC,稍后再发出UPDATE

答案 3 :(得分:1)

尝试 插入X(B)值('你好');

您不需要在A列中插入任何内容,因为DB会在其中插入一个正确的值(因为它的自动增量)。希望C列可以为空。

答案 4 :(得分:1)

INSERT INTO X(A,B,C)
VALUES
(NULL, 'hello', '');

或者您可以修改C列并允许它为null。通过这样做,您可以执行以下操作,

INSERT INTO X(A,B)
VALUES
(NULL, 'hello');