如何使用Scala Java在Postgresql SERIAL列中插入DEFAULT



MySQL将接受NULL到auto increment列并插入最后一个值。所以你可以使用

(使用这个SO答案的代码,其中stpreparedStatement)

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")

将默认值分配给未显式提到的任何列。我不确定当您只有一列时它是如何完成的(另一个答案似乎提供了一种处理它的方法),但正如您自己所说,它无论如何都不是一个合理的用例(作为旁注,您不应该真正编写涵盖"荒谬"的测试;用例).

最新更新