我有一個表:從序列插入新的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'並重復使用相同的序列號?有幾種方法可以做到這一點(並且它們都不涉及「雙重」)。 –