【发布时间】:2021-05-27 23:23:28
【问题描述】:
下面是我用来向表中插入记录的 java 代码的一部分。
public void insertitem(long item_id, long user_id) throws SQLException
{
PreparedStatement pstmt = null;
StringBuffer sqlB = new StringBuffer();
sqlB.append("INSERT INTO ITEMS ");
sqlB.append("(AIR_ID, ACT_ITEM_ID, USER_ID) ");
sqlB.append(" VALUES ");
sqlB.append("(ITEMS_SEQ.nextval,?,?) ");
try
{
pstmt = conn.prepareStatement(sqlB.toString());
int i=1;
pstmt.setLong(i, item_id);i++;
pstmt.setLong(i, user_id);i++;
pstmt.executeUpdate();
}
catch(SQLException e)
{
throw new SQLException(e.getMessage());
}
}
即使我使用 SEQ.nextval,它仍然会抛出以下错误:
java.sql.SQLIntegrityConstraintViolationException:ORA-00001:违反了唯一约束 (ACTTRK.AIR_ID_PK)。**
我该如何解决这个问题?
【问题讨论】:
-
您是在暗示
AIR_ID列是数据库表ITEMS的主键吗? -
在我看来你必须根据表中的 max(air_id) 调整序列的当前值
-
有一个表定义来处理这个问题。生成
-
@Turo 如何将序列设置为 max(AIR_ID)
-
@Abra 是的,AIR_ID 是表 ITEMS 的主键
标签: java sql oracle oracle-sqldeveloper nextval