我有一个表:从序列插入新的ID为表列ID和插入相同的id到另一个表没有双表
create table osoba (osoba_id number,
ime_osobe varchar2(200),
prezime_osobe varchar2(200),
kartica_id number)
create table kartica (kartica_id number,
dozvoljen_ulaz_id number)
我需要做的过程,
- 插入数据输入表
osoba
。 - 检查表
kartica
列kartica_id
中是否有数据。- 如果有,请将该ID添加到表
osoba
中的列kartica_id
。 - 如果没有,则按照我创建的顺序在
kartica
表中添加kartica_id
,然后在表osoba
中将新创建的kartica.kartica_id
添加到kartica_id
。
- 如果有,请将该ID添加到表
Kartica_id
在kartica
和kartica_id
在osoba
必须是唯一的,只有一个kartica_id
在osoba
一个记录,准确的记录(添加人员)。
如果已经有一个kartica_id
加入到相同的值osoba.kartica_id
则抛出错误信息'Kartica_id already exists. No same values allowed.'
并插入下一个新kartica_id
价值kartica
表和值传递给kartica_id
表osoba
。
我是新来的PL/SQL所以这是我到目前为止:
create or replace procedure insertOsoba
(o_osoba_id in osoba.osoba_id%type default generate_id.nextval,
o_ime_osobe in osoba.ime_osobe%type,
o_prezime_osobe in osoba.prezime_osobe%type,
o_kartica_id in kartica.kartica_id%type default null --must be optional
)
is
begin
insert into osoba (osoba_id,ime_osobe,prezime_osobe,kartica_id)
values (o_osoba_id,o_ime_osobe,o_prezime_osobe,o_kartica_id);
end insertosoba;
对我来说是非常困难的阅读和理解你的问题。 但首先,您必须检查(使用光标)是否存在具有参数o_kartica_id的给定值的tabel kartica中的记录。 如果记录存在,则显示该消息。 如果记录不存在,则首先在表卡丁车中创建一条记录;使用osoba的唯一值(sequence?)。然后使用kartica_id的值和过程的其他输入参数将新记录插入tabel osoba。 如果参数o_kartica_id的值为空,该怎么办?什么也没有或在两个表中都插入? – wieseman
如果参数o_kartica_id的值为null,则在kartica_id的表kartica中插入新值,并将该值传递给osoba表中的kartica_id。 – Rinma33
你的意思是你想要在另一个表中插入另一个'insert'并重复使用相同的序列号?有几种方法可以做到这一点(并且它们都不涉及“双重”)。 –