在h2数据库中插入视图

时间:2011-02-17 13:41:05

标签: java database jdbc view h2

编辑:我希望使用该表(viewPaziente)的视图向表(paziente)添加值,而不是直接在表中添加。

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 个答案:

答案 0 :(得分:4)

在H2中,默认情况下视图不可更新。要使它们可更新,您需要使用“代替”触发器。关于如何执行此操作的示例available in the H2 source repository

答案 1 :(得分:-1)

如果你想通过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/insert-update-delete-views.html