如何在oracle中创建继承表

dy2hfwbg  于 2022-12-11  发布在  Oracle
关注(0)|答案(2)|浏览(144)

我有两个名为ParentChild的表。我正在使用oracle创建这些表。子表继承自父表。如何在oracle中创建此继承的子表而不创建类型。
我想为以下PostgreSQL创建表相关oracle语句。

Create Table Parent
(
    .....
)

Create Table Child
(
    .....
)INHERITS (Parent);
mnemlml8

mnemlml81#

Oracle不支持按表继承-它使用TYPE(对象)。在Oracle中执行类似操作的方法是声明父TYPE和子TYPE,然后创建一个表来包含PARENT的示例-类似于:

CREATE OR REPLACE TYPE PARENT AS OBJECT (...);

CREATE OR REPLACE TYPE CHILD UNDER PARENT (...);

CREATE TABLE PEOPLE OF PARENT;

由于CHILD是PARENT的子类型,因此应该可以将CHILD示例存储在PEOPLE表中。
分享和享受。

jtoj6r0c

jtoj6r0c2#

是的,它看起来像在postgres表继承中一样工作,上面提到的解决方案,例如。

DROP TABLE PEOPLE1;
DROP TABLE PEOPLE2;
DROP TYPE CHILD1;
DROP TYPE CHILD2;

CREATE OR REPLACE TYPE commun AS OBJECT (c1 integer, C2 date) NOT FINAL
/

CREATE OR REPLACE TYPE CHILD1 UNDER PARENT (c3 varchar2(20), c4 number(8,2))
/
CREATE OR REPLACE TYPE CHILD2 UNDER PARENT (c5 number(5,2), c6 varchar2(10))
/

CREATE TABLE PEOPLE1 OF CHILD1;
CREATE TABLE PEOPLE2 OF CHILD2;

insert into people1 values (1, sysdate, 'ABCDE', 3.14);
insert into people1 values (2, sysdate, 'FGGHJK', 2.24);

insert into people2 values (3, sysdate, 1.14, 'test');
insert into people2 values (4, sysdate, 8.24 , 'test1');

desc people1
desc people2

select * from people1;
select * from people2;

相关问题