Можно ли через JDBC отправить почтовый ящик DEFAULT
явно, как в INSERT INTO sometables VALUES (blah, DEFAULT)
? (Я почти уверен, что ответ «нет», но я ищу подтверждение JDBC-эксперта).Отправка заполнителя DEFAULT через JDBC?
Допустим, вы имели PreparedStatement
нравится:
INSERT INTO mytable(a, b) VALUES (?, ?)
для таблицы:
CREATE TABLE mytable (
a integer,
b integer default some_function()
);
и вы хотите использовать базу данных набора DEFAULT
для mytable.b
в некоторых исполнениях в партии, но не других.
В обычном SQL вы пишете:
INSERT INTO mytable(a, b) VALUES (1, 42)
INSERT INTO mytable(a, b) VALUES (2, DEFAULT);
...
или конечно:
INSERT INTO mytable(a, b) VALUES (1, 42)
INSERT INTO mytable(a) VALUES (2);
... но вы не можете сделать это с помощью JDBC. setString("DEFAULT")
, конечно же, не отправит ключевое слово DEFAULT
, просто строковый литерал 'DEFAULT'
.
Есть ли способ установить параметр-заполнитель, что означает DEFAULT
в любых широко используемых драйверах?
Я не вижу способа сделать это со стандартным API и спецификацией.
Я что-то вроде себе:
pstmt.setObject(2, Postgresql.DEFAULT, Types.OTHER);
где Postgresql.DEFAULT
это особый экземпляр заполнителя, поскольку, кажется, не быть setDefault()
методом PreparedStatement
.
Поддерживает ли какой-либо существующий драйвер?
Если у вас мало мест, где требуется значение по умолчанию, вы можете просто иметь две копии: 'insert into mytable (ab) values (?,?)' И 'insert into mytable (ab) values (?,?)' , – 9000