2

编辑:我想将值添加到使用该表的视图(viewPaziente)而不是直接使用该表的表(paziente)。

edit2:在代码中发现了一个愚蠢的错误,现在它确实给了我一个错误,但它没有帮助:

org.h2.jdbc.JdbcSQLException:不支持功能:“VIEW”;SQL 语句:INSERT INTO "viewPaziente" values(?,?,?,?,?,?,?,?,?,?,?,?,?) [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;
}
4

2 回答 2

7

在 H2 中,默认情况下视图不可更新。要使它们可更新,您需要使用“代替”触发器。H2 源代码库中提供了有关如何执行此操作的示例。

于 2011-02-21T11:30:29.077 回答
-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

于 2011-02-17T14:12:55.683 回答