【发布时间】:2014-04-21 17:11:14
【问题描述】:
我是 Oracle SQL 的新手,我很难添加约束。我正在尝试在我的表上添加约束以强制执行特定的业务规则,这些规则只允许学生参加 4 门课程,每班最多 25 名学生。
请让我知道您需要我提供哪些其他信息来帮助回答这个问题。我很茫然……
CREATE TABLE GRADES
(STU_ID int NOT NULL ENABLE,
CRSE_ID CHAR(9) NOT NULL ENABLE,
STU_CRSE_GRADE VARCHAR2(20)
check(STU_CRSE_GRADE='A' or
STU_CRSE_GRADE='B' or
STU_CRSE_GRADE='C' or
STU_CRSE_GRADE ='D' or
STU_CRSE_GRADE= 'F'),
CONSTRAINT GRADES_PK PRIMARY KEY (STU_ID, CRSE_ID),
constraint fk_Grades Foreign key(Stu_ID)
REFERENCES Students,
constraint fk_Grades_Crse_ID foreign key(Crse_ID)
REFERENCES Courses
);
没问题!见下表:
CREATE TABLE Students
(Stu_ID int Constraint pk_Stu_ID Primary Key,
Stu_name VARCHAR(255) NOT NULL, Stu_Add varchar(255),
Stu_Maj CHAR(6)
);
CREATE TABLE Instructors
(Instr_ID char(3) Constraint pk_Instr_ID Primary Key,
Instr_Name VARCHAR(255) NOT NULL, Instr_Office varchar(8)
);
CREATE TABLE Courses
(Crse_ID char(9) Constraint pk_Crse_ID Primary Key,
Crse_Title VARCHAR(255) NOT NULL,
Student’s name: Lai Xia
Instr_ID CHAR(3) not null,
constraint fk_Courses_Instr_ID Foreign key(Instr_ID) REFERENCES Instructors
);
【问题讨论】:
-
可能您有一些未在此处列出的表格,这些表格显示了学生正在上哪些课程以及班级中有哪些学生。
grades表似乎与您的问题无关——您需要发布这些表。您在此处列出的规则似乎不是您可以通过约束强制执行的事情,如果这是家庭作业,它们可能是您可以通过触发器强制执行的事情。触发器会在现实世界中产生其他问题。 -
听起来你需要一个插入触发器
-
正如@JustinCave 所说,如果没有看到学生和课程表,就很难提供帮助。
标签: sql database oracle constraints