只是一个简单的问题!
我正在使用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)
);
非常感谢任何帮助!
答案 0 :(得分:3)
您不能将列用作默认值,因此DEFAULT (Weight)
将无效。
默认值通常必须是常量。您也可以使用Oracle函数,但它们不能涉及列,因此允许使用SYSDATE
,CURRENT_TIMESTAMP
和SYSTIMESTAMP
等函数。您也可以默认使用TRIM('abc ')
之类的内容(因为它不涉及列),但这没有多大帮助。
那就是说,我认为您不需要在数据库级别定义默认值。检查要求的措辞(强调增加):
如果未指定Maximum_Mark,则前端应用程序应使用权重。
这里的“前端应用程序”是关键:您的教授希望Weight
替换Maximum_Mark
由前端应用程序完成,而不是由数据库。在我看来,您不需要在数据库级别默认值。