我是plsql的新手,这个命令搞砸了:
insert into coffee_tea_join_table
select coffee_id, 16
from coffee_tea_join_table
where tea_id = 6;
返回
“原因:java.sql.SQLException:ORA-00001:违反了唯一约束” 错误。
coffee_tea_join_table只有两列,coffee_id和tea_id。
看起来该语句想要再次插入来自它所选择的同一个表的内容。我猜它在寻找相应的tea_id = 6的coffee_id表,但为什么那里的'16'静态值呢?没有“16”栏......
如果找到coffee_id,其中tea_id = 6,那么为什么再将它插入同一个表中才有意义?也许这就是违反约束的原因?
答案 0 :(得分:0)
首先,我建议您查看表的唯一索引和主键,然后检查查询提取的记录数。我希望你只得到一个rec。如果很多 - 考虑触发器。可能有些人会覆盖你的16(例如错误的序列)。无论如何,请向我们提供带触发器的表格的ddl。
答案 1 :(得分:0)
如果我们假设表coffee_tea_join_table有两列coffee_id和tea_id,并且该表对这两个表有一个组合唯一约束。 SQL正在创建一个新记录,其中tea_id = 16,cofee_id与tea_id = 6的记录相同。这个错误是由于你已经有一个tea_id = 16和cofee_id =同一个cofee_id值的记录引起的。作为tea_id = 6的记录。
如果这对您没有帮助,那么您需要挖掘表定义,包括表的唯一约束。