pl/sql - 一次插入两个表



我的预言机数据库中有三个表

  • my_bet包括投注
  • t_match包括我下注的比赛
  • 第三个表是两者之间的交集表,有两列bet_idmatch_id

在表my_bett_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

最新更新