当前位置: 首页 > 知识库问答 >
问题:

为什么这个insert会给出错误:表“table”中有一个名为“column”的列,但不能从查询的这一部分引用它

澹台鸿光
2023-03-14

我试图学习使用JDBC对PostgreSQL数据库进行更改。我想尝试将数据插入表中。

private static void createDatabase(Connection connection) throws SQLException {
    Statement stmt = connection.createStatement();
    stmt.executeUpdate("DROP TABLE IF EXISTS " + TABLE_NAME);
    stmt.executeUpdate("CREATE TABLE my_table (Column1 Text)");
    stmt.executeUpdate("INSERT INTO my_table VALUES (column1)");        
}   

运行此操作时,我遇到一个错误:

错误:列“column1”不存在
提示:表“my_table”中有一个名为“column1”的列,但不能从查询的这一部分引用它。

如果该列存在于表中,为什么会出现错误?

共有1个答案

潘安平
2023-03-14

问题是您的语句,INSERT INTO my_table VALUES(Column1),要求插入(INTOColumn1)Column1的当前值。鉴于该行尚不存在,因此无法执行此操作:column1没有当前值。另一方面,明确列出要插入的列是一种好做法。

values子句需要一个值、表达式或参数列表。例如,您可以使用:

INSERT INTO my_table (Column1) VALUES ('Value for Column1')
 类似资料: