0
我需要在插入查詢檢查重複任何領域像名字,如果不存在在這張表使插入新行並返回當前插入的ID 否則 如果名字存在表回零,不使用觸發器,功能和proced檢查重複值之前插入oracle查詢,而不使用觸發器
我需要在插入查詢檢查重複任何領域像名字,如果不存在在這張表使插入新行並返回當前插入的ID 否則 如果名字存在表回零,不使用觸發器,功能和proced檢查重複值之前插入oracle查詢,而不使用觸發器
有作爲「插入查詢」沒有這樣的事情重複
。
實現這樣的要求是與數據完整性約束的正常方式:
alter table your_table
add constraint your_table_uk unique (first_name)
/
,如果你試圖插入重複記錄這將提高任何異常。
獲取當前插入ID:
insert into your_table (id, first_name)
values (your_seq.nextval, 'SAM-I-AM')
returning id
/
你說你不想使用函數或過程,但返回0的唯一方式,如果提交first_name
是重複的是程序:
create or replace function new_record (p_name your_table.first_name%type)
return your_table.id%type
is
return_value your_table.id%type;
begin
begin
insert into your_table (id, first_name)
values (your_seq.nextval, p_first_name)
returning id into return_value;
exception
when dup_val_on_index then
return_value := 0;
end;
return return_value;
end;
如果我想將插入語句作爲參數傳遞給該函數並在函數和返回值中執行它,我該怎麼辦? – 2013-04-08 07:21:47
你說「回報」,但你然後排除任何編程解決方案。那麼你究竟想要做什麼? – APC 2013-04-07 14:36:53