0

只是一个快速的问题!

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

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

“Maximum_Mark 属性存储评估的最大可能原始分数(例如,30),而 Weight 属性存储整个论文的该评估的百分比权重(例如,10%)。如果未指定 Maximum_Mark,则前端应用程序应该对两者都使用权重。”

这是否意味着我应该将最大标记的默认值设置为输入的重量?如果是这样,我该怎么做?到目前为止,这就是我所拥有的,但它不起作用。

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)
);

任何帮助将非常感激!

4

1 回答 1

3

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

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

也就是说,我认为您不需要在数据库级别定义默认值。检查要求的措辞(已添加重点):

如果没有指定Maximum_Mark,那么前端应用程序应该对两者都使用Weight。

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

于 2013-08-09T03:28:25.283 回答