Предположим, у меня есть это следующие SQL заявления, с помощью Oracle:Есть ли другой способ создания ограничений при создании таблицы SQL?
drop table department cascade constraints;
drop table facultyStaff cascade constraints;
drop table student cascade constraints;
drop table campusClub cascade constraints;
drop table studentClub cascade constraints;
create table department
( code varchar2(3) primary key,
name varchar2(40) not null,
chair varchar2(11));
create table facultyStaff
( staffID varchar2(5) primary key,
dob date,
firstName varchar2(20),
lastName varchar2(20),
rank varchar2(10),
deptCode varchar2(3),
constraint rankValue check (rank in ('Assistant', 'Associate', 'Full', 'Emeritus')),
constraint facultyDeptFk foreign key (deptCode) references department (code));
create table student
( studentId varchar2(5) primary key,
dob date ,
firstName varchar2(20),
lastName varchar2(20),
status varchar(10),
major varchar(3),
constraint statusValue check (status in ('Freshman', 'Sophomore', 'Junior', 'Senior', 'Graduate')),
constraint studentMajorFk foreign key (major) references department (code));
alter table department
add constraint departmentChairFk foreign key(chair) references facultyStaff(staffId) on delete set null;
Поскольку существует рекурсивная ссылка между отделом и факультета для отношений кафедры, ограничение внешнего ключа на стуле в отделении не может быть определен до стола факультета определено. Ограничение должно быть добавлено после того, как факультет определен с помощью инструкции alter table.
Есть ли другие способы сделать это, чтобы как-то автоматизировать создание ограничений, тем самым устраняя инструкцию alter table
?
Спасибо за редактирование. Вопрос выглядит лучше :) – rofans91