微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以从类型派生的表中更改属性名称吗?

如何解决我可以从类型派生的表中更改属性名称吗?

基于对象关系数据库模型,我想创建从类型or_doctor派生的表or_recepcionistt_employee。 这里,遵循类型结构:

DROP TYPE t_employee FORCE;
CREATE OR REPLACE TYPE t_employee AS OBJECT (
    num_employee INTEGER,name_employee VARCHAR2(50),birthdate_employee DATE
);

这里是表的结构:

DROP TABLE or_doctor CASCADE CONSTRAINTS;
CREATE TABLE or_doctor OF t_employee (
    PRIMARY KEY (num_employee),name_employee NOT NULL,birthdate_employee NOT NULL
) OBJECT IDENTIFIER IS SYstem GENERATED;

DROP TABLE or_recepcionist CASCADE CONSTRAINTS;
CREATE TABLE or_recepcionist OF t_employee (
    PRIMARY KEY (num_employee),birthdate_employee NOT NULL
) OBJECT IDENTIFIER IS SYstem GENERATED;

这样做,两个表上的属性名称都将以“ employee”结尾。我可以更改属性名称,以使它们在创建表时在每个表中都是特定的吗? 例如:

or_doctor: num_doct,name_doct,birthdate_doct。 表or_recepcionist: num_recep,name_recep,birthdate_recep

解决方法

作为一个框架挑战,不要在标识符中添加后缀,那么您不必担心后缀不正确:

CREATE TYPE t_employee AS OBJECT (
    num       INTEGER,name      VARCHAR2(50),birthdate DATE
);

CREATE TABLE or_doctor OF t_employee (
    PRIMARY KEY (num),name      NOT NULL,birthdate NOT NULL
) OBJECT IDENTIFIER IS SYSTEM GENERATED;

CREATE TABLE or_receptionist OF t_employee (
    PRIMARY KEY (num),birthdate NOT NULL
) OBJECT IDENTIFIER IS SYSTEM GENERATED;

如果您尝试重命名列:

ALTER TABLE or_doctor RENAME COLUMN name TO name_doctor;

然后您将得到错误:

ORA-23291: Only base table columns may be renamed

如果您使用的是对象派生的表,那么您似乎被对象的标识符所困;因此,使对象名称通用,以便它们在将​​要使用的每个位置都适用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。