oracle中如何同时向两张有主外键关系的表中插入数据

时间:2022-04-17 00:41:30
示例:有两张表,学生信息表(简称信息表):student_info(
       STUDENT_ID int not null,--主键ID
       STUDENT_NAME VARCHAR2(10) not null,--姓名
       STUDENT_SEX VARCHAR2(2),--性别
       STUDENT_TEL VARCHAR2(20)--联系电话
);和学生成绩表(简称成绩表):student_core (
       STUDENT_ID INT, --外键ID
       SCORE_ID INT NOT NULL,--主键ID
       JACORE NUMBER,--JAVA成绩
       JPCORE NUMBER--日语成绩
);

其中信息表中的 STUDENT_ID字段我是用sequence 设置的自动增长,现在我从页面获得的数据(包括成绩,姓名等所有信息),要插入到数据库中,因为没有用到hibernate,现在要在后台自己写sql语句,各位有没有什么简单的方法,最好给出sql语句,因为我刚接触oracle,还不太懂,在线等,急~~!!

9 个解决方案

#1


第二张表的score_id也弄成sequence吧,然后两条insert就可以啊

#2


引用 1 楼  的回复:
第二张表的score_id也弄成sequence吧,然后两条insert就可以啊


我好像也弄成sequence了,现在主要是sql语句不会写,大神,求教啊,能不能用一条语句啊,因为我是要写到dao里面的

#3


各位,帮帮忙啦,刚开始接触oracle,什么都还不懂。。。

#4


你先取出sequence值 然后在insert操作

oracle 中这样取 select XXXsequence.nextval from dual;

#5


显然不能一条语句插两个表啊,dao和两条sql有什么关系,

insert into student_info(student_id,student_name,student_sex,student_tel) 

values(sequencename.nextval, '','','')  后面就传过来的参数拼进去就行

#6


引用 4 楼  的回复:
你先取出sequence值 然后在insert操作

oracle 中这样取 select XXXsequence.nextval from dual;

嗯,这一步我想到了,我现在的问题是能不能用一条sql语句就可以同时向两张表里插值?

#7


引用 5 楼  的回复:
显然不能一条语句插两个表啊,dao和两条sql有什么关系,

insert into student_info(student_id,student_name,student_sex,student_tel) 

values(sequencename.nextval, '','','')  后面就传过来的参数拼进去就行
哦,大神,能不能把成绩表的那条insert语句也写出来,万分感谢。。。

#8


可以得到当前学生的学生ID,即刚添加进去的student_id
插入成绩表
insert into student_core (score_id,student_id,jacore,jpcore)  

values(sequencename.nextval, '这里为学生对应的学生ID', ,) 
LZ可以试试

#9


引用 8 楼  的回复:
可以得到当前学生的学生ID,即刚添加进去的student_id
插入成绩表
insert into student_core (score_id,student_id,jacore,jpcore)  

values(sequencename.nextval, '这里为学生对应的学生ID', ,) 
LZ可以试试

谢谢啦,要的就是这个

#1


第二张表的score_id也弄成sequence吧,然后两条insert就可以啊

#2


引用 1 楼  的回复:
第二张表的score_id也弄成sequence吧,然后两条insert就可以啊


我好像也弄成sequence了,现在主要是sql语句不会写,大神,求教啊,能不能用一条语句啊,因为我是要写到dao里面的

#3


各位,帮帮忙啦,刚开始接触oracle,什么都还不懂。。。

#4


你先取出sequence值 然后在insert操作

oracle 中这样取 select XXXsequence.nextval from dual;

#5


显然不能一条语句插两个表啊,dao和两条sql有什么关系,

insert into student_info(student_id,student_name,student_sex,student_tel) 

values(sequencename.nextval, '','','')  后面就传过来的参数拼进去就行

#6


引用 4 楼  的回复:
你先取出sequence值 然后在insert操作

oracle 中这样取 select XXXsequence.nextval from dual;

嗯,这一步我想到了,我现在的问题是能不能用一条sql语句就可以同时向两张表里插值?

#7


引用 5 楼  的回复:
显然不能一条语句插两个表啊,dao和两条sql有什么关系,

insert into student_info(student_id,student_name,student_sex,student_tel) 

values(sequencename.nextval, '','','')  后面就传过来的参数拼进去就行
哦,大神,能不能把成绩表的那条insert语句也写出来,万分感谢。。。

#8


可以得到当前学生的学生ID,即刚添加进去的student_id
插入成绩表
insert into student_core (score_id,student_id,jacore,jpcore)  

values(sequencename.nextval, '这里为学生对应的学生ID', ,) 
LZ可以试试

#9


引用 8 楼  的回复:
可以得到当前学生的学生ID,即刚添加进去的student_id
插入成绩表
insert into student_core (score_id,student_id,jacore,jpcore)  

values(sequencename.nextval, '这里为学生对应的学生ID', ,) 
LZ可以试试

谢谢啦,要的就是这个