java - java.sql.SQLIntegrityConstraintViolationException: ORA-00001
问题描述
下面是我们用来将记录插入表中的 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)。**
我该如何解决这个问题?
解决方案
设置当前序列值
alter sequence ITEMS_SEQ restart start with <your_max_value+1>;
如果这不起作用
ALTER SEQUENCE ITEMS_SEQ INCREMENT BY <your_max_value>;
select ITEMS_SEQ.nextval from dual;
ALTER SEQUENCE ITEMS_SEQ INCREMENT BY 1;
推荐阅读
- php - 使用临时链接时无法滚动视频
- java - 我的代码一直用实际输出值打印“null”
- android - 谷歌地图中的底页和按钮动画
- c - 链表变体
- excel - Excel,索引查找水平值
- python - python 中的 .shuffle 方法以无限循环结束,除非我重新制作被洗牌的列表
- java - 在 JFrame 上显示的 JPanel 是否有限制?
- bash - 在 Bash 中使用带有 ANSI 转义和较长初始文本的提示获取用户输入时出现问题
- php - 数据库 ORM 原则 Symfony 4
- python - 用于将大数的相邻数字相乘并找到最大可能乘积的 Python 代码,但未给出所需结果