我需要在插入查询中检查重复任何字段,如第一个名称,如果此表中不存在,则插入新行并返回当前插入的id 否则 如果表中存在名字,则返回零作为重复
不使用触发器,功能和程序
答案 0 :(得分:3)
没有“插入查询”这样的东西。
实现此类要求的常规方法是使用数据完整性约束:
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
/
您说您不想使用函数或过程,但如果提交的first_name
是重复的,则返回0的唯一方法是编程:
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;