it short circuits - once you hit an error, it is an error - done.
You could set the constraints deferrable and check them yourself, but you'd have to do it row by row (slow by slow), it wouldn't be very useful
ops$tkyte%ORA10GR2> create table error_test
2 ( WAVE_NUM NUMBER DEFAULT 1,
3 REG_NUM NUMBER,
4 FISH NUMBER CONSTRAINT FISH_CHK
5 CHECK ( FISH IN ( 1,2,3,4,5 )) deferrable,
6 RED_MEAT NUMBER CONSTRAINT RED_MEAT_CHK
7 CHECK ( RED_MEAT IN ( 1,2,3,4,5 )) deferrable,
8 CHICKEN NUMBER CONSTRAINT CHICKEN_1_CHK
9 CHECK ( CHICKEN IN ( 1,2,3,4,5 )) deferrable
10 );
Table created.
ops$tkyte%ORA10GR2>
ops$tkyte%ORA10GR2> insert into error_test
2 ( reg_num, fish, red_meat, chicken )
3 values
4 ( 1,88,61,1 )
5 /
insert into error_test
*
ERROR at line 1:
ORA-02290: check constraint (OPS$TKYTE.RED_MEAT_CHK) violated
ops$tkyte%ORA10GR2>
ops$tkyte%ORA10GR2> set constraints all deferred;
Constraint set.
ops$tkyte%ORA10GR2> insert into error_test
2 ( reg_num, fish, red_meat, chicken )
3 values
4 ( 1,88,61,1 )
5 /
1 row created.
ops$tkyte%ORA10GR2> set constraint FISH_CHK immediate;
set constraint FISH_CHK immediate
*
ERROR at line 1:
ORA-02290: check constraint (OPS$TKYTE.FISH_CHK) violated
ops$tkyte%ORA10GR2> set constraint red_meat_chk immediate;
set constraint red_meat_chk immediate
*
ERROR at line 1:
ORA-02290: check constraint (OPS$TKYTE.RED_MEAT_CHK) violated
ops$tkyte%ORA10GR2> set constraint chicken_1_chk immediate;
Constraint set.