我的预言机数据库中有三个表
my_bet
包括投注t_match
包括我下注的比赛- 第三个表是两者之间的交集表,有两列
bet_id
和match_id
。
在表my_bet
和t_match
中,我有生成 ID 的序列。有一个问题:我想创建一个赌注,其中包括例如三场比赛。如何按过程将仅为表中一个ID创建的序列插入两个表中my_bet
。但是现在它在表中生成了三个新 IDt_match
?
我不知道如何更好地描述我的问题,对不起!我希望你能帮助我。
这是我的数据模型 - 表 t_my_bets
Name Null? Type
------------- -------- ------
BET_ID NOT NULL NUMBER
BET_KURZ NUMBER
BET_WIN NUMBER
FK_BET_STATUS NUMBER
BET_MONEY NUMBER
BET_DATE DATE
j_t_bet_match - is join table t_my_bets and t_match
Name Null? Type
-------- ----- ------
BET_ID NUMBER
MATCH_ID NUMBER
and finally t_match
Name Null? Type
---------------- -------- -------------
MATCH_ID NOT NULL NUMBER
MATCH_NAME VARCHAR2(400)
MATCH_RESULT VARCHAR2(20)
MATCH_KURZ NUMBER
MATCH_TIP VARCHAR2(10)
MATCH_LEAGUE VARCHAR2(50)
MATCH_SPORT NUMBER
MATCH_BET_STATUS NUMBER
在匹配表中生成 ID 似乎是一个损坏的工作流。比赛应该是参考数据,因为它们必须存在才能下注。
您的问题缺少太多细节,我们无法提供完整的解决方案,但这里有一个草图。它使用集合来传入您要下注的比赛的 ID。大概您在my_bet
中还有其他需要填充的列,因此需要作为参数传递,但您还没有说明它们是什么,因此您必须自己填写这些列。
create or replace procedure place_bets
( p_matches in sys.ODCINUMBERLIST)
is
v_bet_id number;
begin
insert into my_bet (bet_id)
values (bet_id_seq.nextval) -- or whatever your sequence is called
returning bet id into v_bet_id;
insert into bet_matches -- or whatever your third table is called
( bet_id, match_id)
select v_bet_id, t.column_value
from table(p_matches);
end;
/
因此,第一个 INSERT 创建 BET 记录;它使用 RETURN 子句来捕获分配的bet_id
。第二个 INSERT 为match_id
集合中的每个条目创建一条记录,并将它们链接到bet_id
。