Cтраница 3
Начальное положение записи при ее добавлении в просмотр дерева определяется с помощью функции Insertltem. При вызове этой функции задаются дескриптор родительской записи и дескриптор записи, после которой должна быть вставлена новая запись. Второй из указанных дескрипторов должен быть дескриптором одной из дочерних записей, принадлежащих родительской записи, или принимать одно из следующих значений: TVI FIRST, TVI LAST или TVI SORT. Значения TVI FIRST и TVI LAST задают, что запись должна быть помещена первой или последней в списке дочерних записей родительской записи. Если задано значение TVI SORT, то после вставки записи, дочерние записи принадлежащие данной родительской записи, будут отсортированы по алфавиту. [31]
Установив такой триггер, можно удалять строку из родительской таблицы, и при этом удалятся соответствующие строки в двух дочерних таблицах. Учтите, однако, что если между этими таблицами имеются отношения, созданные с использованием внешних ключей, то в процессе каскадного удаления могут возникнуть трудности. В таких ситуациях SQL-сервер возвращает сообщение об ошибке, информирующее о том, что была сделана попытка удалить родительскую запись до того, как удалены все дочерние. В этом случае, возможно, наилучшим выходом станет создание хранимой процедуры, удаляющей вначале дочерние записи, а затем родительскую. [32]
Записи одного типа могут быть связаны с многими Записями другого типа. Для сравнения отметим, что в иерархической базе данных поиск осуществляется по принципу один - многие: каждая родительская Запись может иметь многие дочерние Записи. Последние, в свою очередь, могут иметь свои дочерние Записи, но каждая дочерняя Запись может быть связана только с одной родительской Записью. [33]
Начальное положение записи при ее добавлении в просмотр дерева определяется с помощью функции Insertltem. При вызове этой функции задаются дескриптор родительской записи и дескриптор записи, после которой должна быть вставлена новая запись. Второй из указанных дескрипторов должен быть дескриптором одной из дочерних записей, принадлежащих родительской записи, или принимать одно из следующих значений: TVI FIRST, TVI LAST или TVI SORT. Значения TVI FIRST и TVI LAST задают, что запись должна быть помещена первой или последней в списке дочерних записей родительской записи. Если задано значение TVI SORT, то после вставки записи, дочерние записи принадлежащие данной родительской записи, будут отсортированы по алфавиту. [34]
Начальное положение записи при ее добавлении в просмотр дерева определяется с помощью функции Insertltem. При вызове этой функции задаются дескриптор родительской записи и дескриптор записи, после которой должна быть вставлена новая запись. Второй из указанных дескрипторов должен быть дескриптором одной из дочерних записей, принадлежащих родительской записи, или принимать одно из следующих значений: TVI FIRST, TVI LAST или TVI SORT. Значения TVI FIRST и TVI LAST задают, что запись должна быть помещена первой или последней в списке дочерних записей родительской записи. Если задано значение TVI SORT, то после вставки записи, дочерние записи принадлежащие данной родительской записи, будут отсортированы по алфавиту. [35]
Конкретное распределение устройств и установка требуемых катушек производится оператором через операционную систему. Групповое данное TRANSACTION-RECORD подразделяется на четырнадцать элементарных данных. Фраза PICTURE на этот раз определяет, к какому фактическому классу принадлежит данное: числовому, буквенному или буквенно-цифровому. В этой же фразе указывается положение десятичной точки. В предыдущей программе все входные данные квалифицировались как буквенно-цифровые с целью обеспечения возможности выполнения проверочных действий, в которых здесь нет необходимости. Запись OLD-PERSONNEL-RECORD по формату идентична записи TRANSACTION-RECORD. Заметим, что с целью облегчения чтения программы каждое элементарное данное именуется с учетом родительской записи при помощи общего префикса, приставляемого к каждому имени. Это не есть требование языка, но существенно помогает при чтении текста программы. Запись NEW-PERSONNEL-RECORD используется только для вывода, поэтому не нуждается в подразделении. [36]