我只是涉足Oracle,所以如果这是基本的,请放轻松...我已经广泛搜索了答案,但答案不存在,这是不可能的,或者我的搜索没有使用正确的术语。
无论如何,我正在编写将创建日期维度表的 DDL。我有一个日期键,它是表的主键,我试图将它传播到表中的所有其他列,以便在将新值添加到日期时用作这些列的默认值关键列。
这是我迄今为止尝试过的一个片段,但给了我错误“ORA-00984:此处不允许列”:
CREATE TABLE DATE_DIM
(
DATE_KEY DATE NOT NULL,
CONSTRAINT DATE_KEY_PK PRIMARY KEY (DATE_KEY),
DAY_NUMBER NUMBER(2) DEFAULT TO_NUMBER(TO_CHAR(DATE_KEY,'DD')),
DAY_NAME VARCHAR(36) DEFAULT TO_CHAR(DATE_KEY,'Day')
)
如果我替换SYSDATE
,DATE_KEY
我不会返回任何错误。但是,假设我正在构思的所有内容都实现了,我将需要插入一个比 sysdate 更具体的日期……为了清楚起见,没有其他列可以更新。
最终,这个想法将扩展到包含具有不同类型数据的其他表,所以如果您想知道为什么我不使用脚本、Excel 等创建一个充满日期的大表,我可以理解。我只是认为日期维度提供了一个很好的例子来解释我想要实现的目标。
谢谢你的帮助。