РУКОВОДСТВО ПО РЕЛЯЦИОННОЙ СУБД DB2

         

ОБНОВЛЕНИЕ НЕСКОЛЬКИХ ТАБЛИЦ


Изменить номер поставщика S2 на S9.

UPDATE S

SET           НОМЕР_ПОСТАВЩИКА = 'S9'

WHERE    НОМЕР_ПОСТАВЩИКА = 'S2';

UPDATE SP

SET           НОМЕР_ПОСТАВЩИКА = 'S9'

WHERE    НОМЕР_ПОСТАВЩИКА = 'S2';

Невозможно обновить более одной таблицы в единственном запросе. Иными словами, в предложении UPDATE должна специфицироваться в точности одна таблица. Поэтому в данном примере мы сталкиваемся со следующей проблемой целостности (точнее, с проблемой целостности по ссылкам): база данных становится противоречивой после выполнения первого предложения UPDATE — она включает теперь некоторые поставки, для которых не имеется соответствующей записи о поставщике, и остается в таком состоянии до тех пор, пока не будет выполнено второе предложение UPDATE. Изменение порядка предложений UPDATE, конечно, не решает эту проблему. Поэтому важно обеспечить выполнение обоих

этих предложений, а не только одного. Этот вопрос о поддержании целостности в условиях, когда требуется множество обновлений, детально обсуждается в главе 11. Кроме того, проблема целостности по ссылкам, в частности, подробно описана в Приложении А, а использованный в системе DB2 подход к ее решению представлен в Приложении В.



Содержание раздела