पार्टी में देर से आना, लेकिन...
ऑरैकल 11.2.0.1 के साथ एक अर्थपूर्ण संकेत . है जो ऐसा कर सकता है:IGNORE_ROW_ON_DUPKEY_INDEX
उदाहरण:
insert /*+ IGNORE_ROW_ON_DUPKEY_INDEX(customer_orders,pk_customer_orders) */
into customer_orders
(order_id, customer, product)
values ( 1234, 9876, 'K598')
;
अपडेट करें :हालांकि यह संकेत काम करता है (यदि आप इसे सही ढंग से लिखते हैं), ऐसे बेहतर तरीके हैं जिनके लिए Oracle 11R2 की आवश्यकता नहीं है:
पहला दृष्टिकोण—उपरोक्त अर्थ संकेत का सीधा अनुवाद:
begin
insert into customer_orders
(order_id, customer, product)
values ( 1234, 9876, 'K698')
;
commit;
exception
when DUP_VAL_ON_INDEX
then ROLLBACK;
end;
दूसरा दृष्टिकोण—एक लॉट बहुत विवाद होने पर उपरोक्त दोनों संकेतों से तेज़:
begin
select count (*)
into l_is_matching_row
from customer_orders
where order_id = 1234
;
if (l_is_matching_row = 0)
then
insert into customer_orders
(order_id, customer, product)
values ( 1234, 9876, 'K698')
;
commit;
end if;
exception
when DUP_VAL_ON_INDEX
then ROLLBACK;
end;