创建可以存储与另一个属性相同的值的属性

时间:2013-08-09 02:37:13

标签: sql oracle

只是一个简单的问题!

我正在使用Oracle SQL Developer实现学校数据库,我遇到了一个我不太确定如何实现的要求。

基本上,数据库是学生管理系统,我目前正在研究评估表。这是要求

“Maximum_Mark属性存储评估的最大可能原始标记(例如,30),而权重属性存储该评估对纸张整体的百分比权重(例如,10%)。如果Maximum_Mark不是指定,然后前端应用程序应使用权重。“

这是否意味着我应该将最大标记的默认值设置为为Weight输入的内容?如果是这样,我该如何解决这个问题呢?到目前为止,这是我所拥有的,但它不起作用。

CREATE TABLE Assessment
(
  Assessment_ID   NUMBER(10),
  ...
  ...
  Weight          NUMBER(3)
   CONSTRAINT Assessment_Weight_Null NOT NULL
   CONSTRAINT Assessment_Weight_Invalid CHECK(Weight BETWEEN 0 AND 100),
  Maximum_Mark    NUMBER(3)
   DEFAULT (Weight),

   CONSTRAINT Assessment_PK PRIMARY KEY (Assessment_ID)
);

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

您不能将列用作默认值,因此DEFAULT (Weight)将无效。

默认值通常必须是常量。您也可以使用Oracle函数,但它们不能涉及列,因此允许使用SYSDATECURRENT_TIMESTAMPSYSTIMESTAMP等函数。您也可以默认使用TRIM('abc ')之类的内容(因为它不涉及列),但这没有多大帮助。

那就是说,我认为您不需要在数据库级别定义默认值。检查要求的措辞(强调增加):

  
    

如果未指定Maximum_Mark,则前端应用程序应使用权重。

  

这里的“前端应用程序”是关键:您的教授希望Weight替换Maximum_Mark前端应用程序完成,而不是由数据库。在我看来,您不需要在数据库级别默认值。