Структуризированный язык запросов (SQL)

       

О конструировании предложений модификации


Для тех, кто достаточно хорошо понял предложение SELECT, несложно овладеть конструированием предложений DELETE, INSERT и UPDATE. Но в процессе такого конструирования следует учитывать, что:

  1. Если в WHERE фразе предложений DELETE и UPDATE используется вложенный подзапрос, то во фразе FROM этого подзапроса не должна упоминаться таблица, из которой удаляются (в которой обновляются) строки. Аналогично, в подзапросе предложения INSERT не должна упоминаться таблица, в которую загружаются данные.

Так, SQL отвергнет предложение

INSERT INTO Выбрано SELECT (33), Т, БЛ FROM Выбрано WHERE СМ = 17;

позволяющее ввести информацию о том, что отдыхающий, сидящий на 33-м месте, выбирает тот же набор блюд, что и отдыхающий, сидящий на 17-м месте. Ввод придется осуществить через какую-либо промежуточную таблицу, например, таблицу Выбор:

DELETE FROM Выбор;

INSERT INTO Выбор (СМ, Т, БЛ) SELECT (33), Т, БЛ FROM Выбрано WHERE СМ = 17;

INSERT INTO Выбрано SELECT СМ, Т, БЛ FROM Выбор;

  • Составляя предложения модификации данных, необходимо все время помнить о сохранении непротиворечивости базы данных. Об этом упоминалось ранее и подробно говорилось в литературе [2].
  • 4.4 | Содержание | 5.1



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