2017-10-29 137 views
0

我想创建具有扩展列的表,具体取决于用户活动。 如果我有表Project,Worker和Worker_Projects,看起来像这样:Oracle SQL动态列

Worker_project: 工人名称,项目名称列表列。 每当我添加项目我想改变表格,并添加列, 但问题是,PL SQL不支持一些静态SQL,包括Alter。

我还有什么其他解决方案?

回答

2

错误的方法。正确的表格列表,但方法错误。

create table WorkerProject (
    WorkerId int not null references Workers(WorkerId), 
    ProjectId int not null references Projects(ProjectId) 
); 

这是基本的想法。你并没有真正给出你的表格的布局,但主意是你添加了一个新的,而不是新的。这被称为联结表。

您也可以在表格中添加其他信息。例如,工作人员分配的日期,谁分配的日期等等。

我应该指出,Oracle是一个功能强大的数据库,可以提供其他解决方案,例如嵌套表或JSON编码。首先,您应该掌握如何以SQLish方式存储关系数据库的基础知识。如果您有特定需求,那么还有其他功能可以提供帮助。