MySQL将接受NULL到auto increment
列并插入最后一个值。所以你可以使用
(使用这个SO答案的代码,其中st
是preparedStatement
)
st.setNull(1, java.sql.Types.NULL)
我试图找出你如何做同样的与Postgresql,在那里你不能使用NULL
,但必须使用DEFAULT
代替:
INSERT INTO serial_table (id) VALUES(NULL)
这样的东西存在吗?
st.setDefault(1, java.sql.Types.DEFAULT)
或
st.setObject(1, "DEFAULT")
我想我不能只使用字符串"DEFAULT"
编辑:
澄清一下,这是一个测试表,定义如下:
CREATE TABLE serial_table (
id SERIAL NOT NULL PRIMARY KEY
);
所以我不能直接跳过这一列让Postgresql处理
INSERT INTO serial_table VALUES()
ERROR: syntax error at or near ")"
LINE 1: INSERT INTO serial_table VALUES();
^
要插入仅由的默认值组成的行,可以使用:
INSERT INTO serial_table DEFAULT VALUES
省略主键:
insert into foo (bar) values ("foobar")
将默认值分配给未显式提到的任何列。我不确定当您只有一列时它是如何完成的(另一个答案似乎提供了一种处理它的方法),但正如您自己所说,它无论如何都不是一个合理的用例(作为旁注,您不应该真正编写涵盖"荒谬"的测试;用例).