我想在表X中插入一行,该表由列A,B和C组成。
如何在不收到错误的情况下执行insert into X (A, B) values (NULL, 'hello');
?当我不包括C列时,我收到错误。
我省略了SQL查询中的第三列,A是一个id自动增量。
有没有办法只插入前两列,然后再对第三列进行更新?
答案 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');