を同じ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
にデータがあるかどうかを確認します。- ある場合は、テーブル
osoba
の列kartica_id
にそのIDを追加します。ない場合には、私が作成したシーケンスによってkartica
表にkartica_id
を追加し、テーブルosoba
にkartica_id
にその新しく作成されたkartica.kartica_id
を追加 - 。
osoba
でkartica
で
Kartica_id
- ある場合は、テーブル
kartica_id
は一意である必要があり、一つだけ
kartica_id
その正確なレコードの
osoba
内の1つのレコードの(人が追加しました)。
既に存在する場合kartica_id
は、エラーメッセージ'Kartica_id already exists. No same values allowed.'
を投げるとkartica
テーブルの隣に新しいkartica_id
値を挿入し、テーブルosoba
にkartica_id
にその値を渡す同じ値のosoba.kartica_id
に加えます。私はkartica_id
ためのシーケンスとしてkartica_seq
を使用する解決策を掲載してい
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のレコードが存在するかどうかを確認する必要があります(カーソルで)。 レコードが存在する場合は、メッセージを表示します。 レコードが存在しない場合は、最初にテーブルkarticaにレコードを作成します。 osobaのユニークな値(シーケンス??)を使用します。そして、kartica_idの値とプロシージャの他の入力パラメータを使って、tabel osobaに新しいレコードを挿入します。 パラメータo_kartica_idの値がnullの場合はどうなりますか?両方のテーブルには何も挿入されていませんか? – wieseman
パラメータo_kartica_idの値がnullの場合、kartica_idの表karticaに新しい値を挿入し、その値をosoba表のkartica_idに渡します。 – Rinma33
別の 'insert'を2番目のテーブルに作り、同じシーケンス番号を再利用したいのですか?これを行うにはいくつかの方法があります(どちらも '二重'を含む)。 –