Вставить в представление в базе данных h2 - PullRequest
2 голосов
/ 17 февраля 2011

edit: Я хочу добавить значения в таблицу (paziente), работающую с представлением этой таблицы (viewPaziente), а не непосредственно с таблицей.

edit2: Найдена глупая ошибка в коде, теперь она дает мне ошибку, но это не помогает:

org.h2.jdbc.JdbcSQLException: функция не поддерживается: "VIEW";Оператор SQL: INSERT INTO значения "viewPaziente" (?,?,?,?,?,?,?,?,?,?,?,?,?) [50100-147]

Можно ли вставить строку в виде таблицы?

Я имею в виду ... У меня есть таблица "paziente" со многими полями, я создал вид Paziente и хочу добавитьСтрока, чтобы paziente через вид.Можно ли сделать это в H2?

Я использую следующий код

public static boolean AddAnagrafica(String nome, String cognome, 
        String data, String telefono, String email,String codiceFiscale, boolean isDonna, String indirizzo, String citta, 
        String provincia, String cap, String paese ){
    Connection conn=null;
    try {
         conn = getConnection();
         PreparedStatement st = conn.prepareStatement("INSERT INTO \"viewPaziente\" values(?,?,?,?,?,?,?,?,?,?,?,?,?)");
         st.setInt(1, new Random().nextInt()); 
         st.setString(2,nome);
         st.setString(3,cognome);
         st.setString(4,data);
         st.setString(5,telefono);
         st.setString(6,email);
         st.setString(7,codiceFiscale);
         st.setBoolean(8,isDonna);
         st.setString(9,indirizzo);
         st.setString(10,citta);
         st.setString(11,provincia);
         st.setString(12,cap);
         st.setString(13,paese);
         st.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return false;
}

Ответы [ 2 ]

4 голосов
/ 21 февраля 2011

В H2 представления по умолчанию не обновляются. Чтобы сделать их обновляемыми, вам нужно использовать триггер «вместо». Пример того, как сделать это доступно в репозитории исходного кода H2 .

0 голосов
/ 17 февраля 2011

Если вы хотите скопировать определенные столбцы для вставки в представление через Java, я надеюсь, что это то, что вы ищете, если не сообщите мне.

st.executeQuery("insert into viewPaziente(ID, Name, Start_Date) values SELECT id, first_name, sysdate FROM Paziente Where <matching condition>");

Дополнительная информация о вставке, обновлении или удалении http://sql -plsql.blogspot.com / 2009/03 / вставка-обновление-удаление-views.html

...