将一列中的2列的整个值复制到另一个表以确保关系

时间:2012-09-25 06:20:35

标签: oracle plsql

我有一个表STUDENT,其中包含st_id,name,age,dept_name列。现在,我想创建一个包含STUDENT_DESC列的新表st_id,dept_name,st_desc。因此,我需要将st_iddept_name的所有值复制到新创建的表STUDENT_DESC。我需要在复制st_iddept_name时确保关系,dept_name应该对应st_id。那么我怎样才能在PL / SQL中做到这一点?

2 个答案:

答案 0 :(得分:1)

我不确定我是否理解您的数据模型,但从表面上看,您可以简单地创建表格:

CREATE TABLE student_desc AS SELECT st_id, dept_name FROM student;

ALTER TABLE student_desc ADD (st_desc VARCHAR2(..));

使用..所需的最大尺寸填写st_desc

答案 1 :(得分:1)

insert into STUDENT_DESC (select st_id, dept_name, null from student);

这将简单地复制所有记录。第三列st_desc保留为空(null)

为确保参照完整性,您需要向STUDENT_DESC表添加主键和参照完整性约束

但是,请注意,在许多情况下,引入包含此类学生数据的第二个表可能是“错误的”。将st_desc添加到STUDENT表格可能会“更好”。