如何在多个关联的表插入数据?

shizai1856 2011-04-15 05:15:51
例如:
表1.user
字段:id, not null;
name
role, not null;

表2.role
字段:id, not null;
name
resc, not null;

表3.resc
字段:id, not null;
name
user,not null;
...全文
255 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
luwinner 2012-07-27
  • 打赏
  • 举报
回复
顶贴,我也正在纠结这种问题,还没解决
304的的哥 2011-04-15
  • 打赏
  • 举报
回复

not null列的必须提供数据
primary key和unique列的必须提供唯一值
下面说说参照约束的,既外键约束:
1.你可以先在被参照的表中添加数据,再向参照表添加数据
2.你可以将外键约束延迟,到提交时才验证参照约束。
在相关约束后面加上 DEFERRABLE INITIALLY DEFERRED
xumeng929 2011-04-15
  • 打赏
  • 举报
回复
以前我这样用过,但是忘记了,帮你找了一下,希望对你有帮助
在以前的版本中,如果想插入多个表中,需要使用多条INSERT语句,9I开始可以用一条INSERT语句实现向多个表中插入数据.
INSERT [ALL] [conditional_insert_clause]
[insert_into_clause values_clause] (subquery)

其中conditional_insert_clause如下:
[ALL] [FIRST]
[WHEN condition THEN] [insert_into_clause values_clause]
[ELSE] [insert_into_clause values_clause]

上面的语法说明其实包含了两种情况
>无条件
>有条件,所以后面的conditional_insert_clasue里出现的[ALL]和INSERT后面的[ALL]是分属两种情形下的
举例就很容易理解了


无条件INSERT ALL
INSERT ALL
INTO sal_history VALUES(EMPID,HIREDATE,SAL)
INTO mgr_history VALUES(EMPID,MGR,SAL)
SELECT employee_id EMPID,hire_date HIREDATE,salary SAL,manager_id MGR
FROM employees
WHERE employee_id>200;
因为没有附加限制于检索出的记录,所以所有检索返回数据讲根据其列名插入相应的表中.

有条件的INSERT ALL
INSERT ALL
WHEN SAL>10000 THEN
INTO sal_history VALUES(EMPID,HIREDATE,SAL)
WHEN MGR>200 THEN
INTO mgr_history VALUES(EMPID,MGR,SAL)
SELECT employee_id EMPID,hire_date HIREDATE,salary SAL,manager_id MGR
FROM employees
WHERE employee_id>200;
这里就将比较了,返回记录将比较其SAL,如果大于10000则插入SAL_HISTORY,同理,MGR大于200的记录将插入MGR_HISTORY表.其余都将丢弃.

有条件的FIRST INSERT
FIRST与ALL的区别在于当遇到第一个求值为TRUE的子句之后停止对WHEN子句求值,而ALL不论是否求值为TRUE.
INSERT FIRST
WHEN SAL>25000 THEN
INTO special_sal VALUES(DEPTID,SAL)
WHEN HIREDATE like ('%00%') THEN
INTO hiredate_history_00 VALUES(DEPTID,HIREDATE)
WHEN HIREDATE like ('%99%') THEN
INTO hiredate_history_99 VALUES(DEPTID,HIREDATE)
ELSE
INTO hiredate_history VALUES(DEPTID,HIREDATE)
SELECT department_id DEPTID,SUM(salary) SAL,
MAX(hire_date) HIREDATE
FROM employees
GROUP BY department_id;
上例中如果第一个WHEN子句求值为TRUE则其后的WHEN子句将不会被执行,反之将直到遇到第一个满足条件的子句执行为止.

China_yuanli 2011-04-15
  • 打赏
  • 举报
回复
什么意思? 一次往3个表中插数据 这种不大可能吧,况且插入要注意次序的
shizai1856 2011-04-15
  • 打赏
  • 举报
回复
能写个sql例子吗?
UPC子夜 2011-04-15
  • 打赏
  • 举报
回复
只能是多个insert语句 一条语句做不到吧
horizonlyhw 2011-04-15
  • 打赏
  • 举报
回复
没啥太好的办法~~

procedure?
数据可视化有什么意义?】 举一个身边的例子,我们平时在电视上看到的天气预报,会用不同的色块代不同地区的气温、降水情况。通过观察区域色块分布,我们可以马上了解哪里气温高,哪里雨水多。 这种数形结合的形式,让我们更容易抓住重点信息,比枯燥的文字、简单格更有吸引力。 数据可视化,就是让数据分析的结果以最直观的方式呈现,将“孤独”的数据联系起来,让“单调”的数据生动起来。通过观察可视化图数据之间的关联、变化一目了然。 【“无处不在”的数据分析与可视化】 一图胜千言,数据分析与可视化如今在我们的工作和生活中处处可见,职场中90%以上的岗位都会跟数据打交道。掌握数据分析与可视化技能,可以极大提升工作效率。 【4.5小时极速提升数据能力数据小白也能轻松上手】 Python数据分析与可视化的学习,重在实操,空谈语法毫无意义。 本课程着重讲解数据分析与可视化工具的实操应用,结合实战案例,带你边学边练,重点知识充分理解。 四大案例结合实际场景,帮助你加深记忆,并且在日后的求职面试或毕业设计中,这些案例都可以复用。 【通解数据科学 拓宽收益渠道】 如今,许多行业都有数据方向的人才需求。 掌握数据分析与可视化技能,你就可以: 【适用人群】 【三重权益】

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧