Constraint progresssubjectforeign foreign KEY (idsubject) references Subject

CONSTRAINT ProgressReportForeign FOREIGN KEY (IDReport) REFERENCES Report,

CONSTRAINT ProgressTeacherForeign FOREIGN KEY (PIN) REFERENCES Teacher)

Внешние ключи являются по своей сути двунаправленными. По умолчанию SQL Server 2000 запретит удаление строки в ссылочной таблице, если ей соответствует хотя бы одна строка в ссылающейся таблице. То есть нельзя удалить информацию о студенте, если в таблице Progress есть хотя бы одна запись, которая соответствует этому студенту. Опция ON DELETE CASCADE указывает на то, что при удалении записи в ссылочной таблице, автоматически удаляются записи в ссылающейся таблице. Опция же ON UPDATE CASCADE позволяет при модификации строки в родительской таблице модифицировать соответствующие строки в дочерних таблицах. По умолчанию устанавливается опция NO ACTION, запрещающая в одном случае удаление, в другом – редактирование.

Синтаксис на уровне столбца

[СONSTRAINT <имя ограничения>] FOREIGN KEY

REFERENCES <имя ссылочной таблицы> [(<имя столбца>)]

[ON DELETE {CASCADE|NO ACTION}]

[ON UPDATE {CASCADE|NO ACTION}]

Пример 10

Задача.

Обеспечить каскадное удаление в таблице Progress при удалении соответствующих записей в ссылочных таблицах.

Решение.

CREATE TABLE Progress

(NRecordBook Varchar(6),

PIN INT,

IDSubject INT,

IDReport INT,

NTerm Varchar(2),

Mark SMALLINT,

CONSTRAINT ProgressPrimary PRIMARY KEY

(NrecordBook,IDSubject,IDReport,NTerm),

CONSTRAINT ProgressStudentForeign FOREIGN KEY (NRecordBook) REFERENCES Student ON DELETE CASCADE,

CONSTRAINT ProgressSubjectForeign FOREIGN KEY (IDSubject) REFERENCES Subject ON DELETE CASCADE,

CONSTRAINT ProgressReportForeign FOREIGN KEY (IDReport) REFERENCES Report ON DELETE CASCADE,

CONSTRAINT ProgressTeacherForeign FOREIGN KEY (PIN) REFERENCES Teacher ON DELETE CASCADE);

Обратим внимание на тот факт, что опция ON DELETE CASCADE указывается для каждого ограничения FOREIGN KEY, если мы хотим, чтобы каскадное удаление выполнялось при выполнении операции удаления данных в каждой ссылочной таблице.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: