Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Использование данных другой таблицы для присваивания значения

Использование данных другой таблицы для присваивания значенияВ данной инструкции существует два предложения WHERE: первое относится к инструкции SELECT (обрамленной скобками, которые ограничивают возвращаемый набор данных до одной строки). Внутренний подзапрос возвращает первичный ключ, соответствующий сроку платежа с кодом N21531. Второе предложение WHERE принадлежит инструкции UPDATE и гарантирует, что будет обновлена только одна строка таблицы ORDER_HEADER (с полем ORDHDR_ID_N, равным 30670). Приведенный выше пример был довольно простым, мы получали значение, необходимое для обновления, из подчиненного запроса. Однако иногда ситуация бывает гораздо сложнее. Для примера представьте себе, что бизнес-правила компании ACME изменились и не позволяют устанавливать сроки платежа, отличные от указанных для клиента, разместившего заказ. При этом можно связать (объединить) таблицу из предложения UPDATE с таблицей из починенного подзапроса, однако это нарушает правило “однострочности подзапроса”, поскольку отношение будет установлено для всех строк.

В последней строке приведенного примера поле ORDHDR_CUSTID_FN таблицы ORDER_HEAD — ER связывается с полем CUST_ID_N таблицы CUSTOMER. Другим словами, поле идентификатора клиента в связи между инструкцией UPDATE и вложенным подзапросом коррелирует их. В данном случае нет необходимости квалифицировать поля именами таблиц, так как при создании базы данных были использованы соглашения об именовании, обязывающие использовать в качестве префиксов в именах полей сокращенные имена соответствующих таблиц. Таким образом, коллизий имен по определению произойти не может. Для каждой строки таблицы ORDER_HEADER следует найти соответствующее значение в результатах подзапроса и использовать его для обновления. Эта концепция проиллюстрирована Подзапросы можно использовать и в предложении where инструкции update практически так же, как в предложении where инструкции select.