我有一个如下所示的存储过程:
BEGIN
INSERT INTO result_table
(SELECT (...) FROM query_table);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
NULL;
END;
我在将多个参数传递给 SELECT 语句的循环中执行此操作,在某些情况下,某些值可能会重复,这就是我必须捕获 DUP_VAL_ON_INDEX 异常的原因。
我的问题是,如果 SELECT 语句返回更多行并且其中只有一个已经存在于 *result_table*, f. 前任。
1 'A'
2 'B'
3 'C'
并且第一行(1'A')已经在表中,是否会插入其他不存在的行(上面的第二个和第三个)?或者根本不会插入它们?
恐怕它们都不会被插入(我的测试用例部分证实了这一点)......如果是这样,我必须有什么选择来实现所需的行为?有没有使用上面的结构插入不违反主键的行的好方法?