当前位置: 首页 > 知识库问答 >
问题:

Oracle中使用主键将多表插入到表中

欧阳何平
2023-03-14

我正在尝试使用单个表将数据插入到不同的表中,并且我正在插入的表具有主键。

INSERT
ALL
WHEN TO_CHAR(L_SHIPDATE,'YYYY') = '1995' THEN
 INTO YEAR1995
  VALUES (L_PARTKEY, L_EXTENDEDPRICE - 0.1*L_EXTENDEDPRICE)
WHEN TO_CHAR(L_SHIPDATE,'YYYY') = '1996' THEN
 INTO YEAR1996
  VALUES (L_PARTKEY, L_EXTENDEDPRICE - 0.1*L_EXTENDEDPRICE)
WHEN TO_CHAR(L_SHIPDATE,'YYYY') = '1997' THEN
 INTO YEAR1997
  VALUES (L_PARTKEY, L_EXTENDEDPRICE - 0.1*L_EXTENDEDPRICE)


SELECT distinct L_PARTKEY, L_EXTENDEDPRICE, L_SHIPDATE 
FROM LINEITEM;
CREATE TABLE YEAR1995
(
    Y95_PARTKEY NUMBER(12) NOT NULL,
    Y95_PRICE   NUMBER(12) NOT NULL,
    CONSTRAINT YEAR95_PKEY PRIMARY KEY (Y95_PARTKEY, Y95_PRICE)  
);

共有1个答案

张高澹
2023-03-14

正如本文所建议的,您可以尝试以下方法:

exec dbms_errlog.create_error_log ('myInsertErrors');

INSERT
ALL
WHEN TO_CHAR(L_SHIPDATE,'YYYY') = '1995' THEN
 INTO YEAR1995
  VALUES (L_PARTKEY, L_EXTENDEDPRICE - 0.1*L_EXTENDEDPRICE)
WHEN TO_CHAR(L_SHIPDATE,'YYYY') = '1996' THEN
 INTO YEAR1996
  VALUES (L_PARTKEY, L_EXTENDEDPRICE - 0.1*L_EXTENDEDPRICE)
WHEN TO_CHAR(L_SHIPDATE,'YYYY') = '1997' THEN
 INTO YEAR1997
  VALUES (L_PARTKEY, L_EXTENDEDPRICE - 0.1*L_EXTENDEDPRICE)


SELECT distinct L_PARTKEY, L_EXTENDEDPRICE, L_SHIPDATE 
FROM LINEITEM

LOG ERRORS INTO err$_myInsertErrors REJECT LIMIT UNLIMITED;

这样,所有的insert异常(即重复数据)都将存储ERR$_MYINSERTERRORS表中,并完成insert语句

 类似资料:
  • 在本教程中将学习如何使用Oracle 语句将多行插入到一个或多个表中。 在之前的教程中,我们已经学习了如何在表中插入一行。 但是,有时我们可能希望将多行插入到一个或多个表中。 在这种情况下,就可以使用Oracle 语句,该语句也被称为多项式插入语句。 Oracle提供了两种类型的多项式插入语句:无条件的和有条件的。 1. 无条件的Oracle INSERT ALL语句 将多行插入到表中,要将多行插

  • 我正在创建一个使用Apache Web服务器(PHPmyAdmin)的PHP网站 我有三张桌子: 品牌 brand_id(主键)自动增加 brand_name < li>item_id(主键)自动递增 < li >项目类别 model_id(主键)自动增加 item_model brand_id(brand.brand_id的外键) brand_name(item.item_id的外键) 数量 价

  • 问题内容: 我当前正在使用SQL Server 2008,并且正在尝试使用表变量创建语句以在表中插入多行。就目前而言,我必须将要添加的信息插入4个不同的位置(2个select语句,1个insert和1个update),但是希望能够创建一个表变量,因此我只需要输入信息一次。任何帮助/建议将不胜感激。 这是我试图改变的一个例子。 问题答案: 这是您仅要输入一次信息所要寻找的东西吗?

  • 问题内容: 我首先看一下Oracle的多表插入(总体上我对SQL还是很陌生),但我不太理解语句结尾处的目的/需求。 对于单表,据我了解,可以使用子句或子查询,但不能同时使用。有人可以在本声明结尾解释该条款的重要性吗?我在网上看过,但没有找到明确的答案。 问题答案: 该选择用于确定变量 prod_category 的值,该变量用于

  • 问题内容: 这是我正在查看的表的简化版本: 我想在此表中插入新记录。我尝试了3种方法: 这种方法会插入,但是生成的键与表中的其他键不同,不是一个很好的顺序GUID 这失败并显示错误 newsequentialid()内置函数只能在CREATE TABLE或ALTER TABLE语句中的’uniqueidentifier’类型的列的DEFAULT表达式中使用。它不能与其他运算符组合以形成复杂的标量表

  • 问题内容: 我要寻找正确的语法和方式做直接从SQL如下:插入或更新(如果数据已经内部存在)从包含在数据与两者都具有相同的复合主键。 这两个表的定义为: 将定期删除并填充。 因为相同的定义,但将包含数据的更多的行和我需要的是从插入从未见过值入,并更新现有的行。 我曾经做过这种插入,但是我不知道如何处理更新和复合主键: 编辑:我正在使用 SQL Server 9.00.5000 编辑:另一种受MERG