Программирование >>  Построение запросов sql 

1 ... 67 68 69 [ 70 ] 71 72 73 ... 101


UPDATE Abonent Information SET NAME = СИМКИНА З.А. WHERE CODE = 136159;

DELETE FROM Abonent Information WHERE CODE = 123456;.

Данные, получаемые в результате выполнения запроса

SELECT * FROM Abonent Information;

представлены на рис. 5.20.

CODE

STREET

HOUSE

FLAT

NAME

005488

АКСЕНОВ С.А.

015527

КОНЮХОВ В.С.

443690

ТУЛУПОВА М.И.

136159

СИМКИНА З.А.

443069

СТАРОДУБЦЕВ Е.В.

136160

ШМАКОВ С.В.

136169

ДЕНИСОВА Е.К.

080613

ЛУКАШИНА Р.М.

080047

БУЛГАКОВА Т.П.

080270

ТИМОШКИНА Н.Г.

Рис. 5.20. Данные представления AbonentInformation после обновления и

удаления

Если пользователь попытается вставить или обновить значение поля NAME для абонента с номером лицевого счета 005488, установив фамилию абонента, например, как МОРОЗОВ А.Н. с помощью следующего запроса:

UPDATE Abonent Information SET NAME = МОРОЗОВ А.Н. WHERE CODE = 005488;, то подобный запрос потерпит неудачу из-за того, что при создании представления было использовано предложение WITH CHECK OPTION. Будет выдано сообщение об ошибке следующего содержания: Operation violates CHECK constraint on view or table AbonentInformation .

Если пользователь выполнит следующий запрос на удаление:

DELETE FROM Abonent Information WHERE NAME LIKE М%;,

то в данном случае ошибки не возникнет, но в самой таблице Abonent никаких изменений не произойдёт (в данном случае это не является следствием использования предложения WITH CHECK OPTION, а есть следствие применения в запросе представления условия поиска WHERE Fio NOT LIKE М%).

Чтобы пояснить результаты действия раздела WITH CHECK OPTION, рассмотрим еще один пример. Допустим, что в базе данных созданы два обновляемых представления: Nach Information 20, показывающее информацию о начислениях с суммами, меньшими 20 (идентификатор факта начисления, номер лицевого счета абонента и начисленная сумма), и Nach Information 15, отображающее данные предыдущего представления с суммами более 15. Запросы на создание этих двух представлений будут выглядеть следующим образом:



CREATE VIEW Nach Information 20 (Fact, Code, Summa) AS SELECT NachislFactCD, AccountCD, NachislSum

FROM NachislSumma WHERE NachislSum<20 [WITH CHECK OPTION];

CREATE VIEW Nach Information 15

AS SELECT Fact, Code, Summa

FROM Nach Information 20 WHERE Summa >15

[WITH CHECK OPTION];

Данные, получаемые после выполнения запроса

SELECT * FROM Nach Information 20;,

представлены на рис. 5.21.

FACT

CODE

SUMMA

136160

18,30

080047

19,56

080613

10,60

080613

12,60

136159

8,30

443690

17,80

126112

15,30

080613

12,60

015527

18,32

136159

8,30

136160

18,30

Рис. 5.21. Данные представления Nach Information 20

Данные, получаемые после выполнения запроса SELECT * FROM Nach Information 15;,

представлены на рис. 5.22.

FACT

CODE

SUMMA

136160

18,30

080047

19,56

443690

17,80

126112

15,30

015527

18,32

136160

18,30

Рис. 5.22. Данные представления Nach Information 15

В каждом из представлений Nach Information 20 и Nach Information 15 может отсутствовать или присутствовать предложение WITH CHECK OPTION. Рассмотрим, что будет происходить в каждом из возможных случаев при выполнении следующих двух запросов на модификацию строк (будем называть эти запросы U1 и U2 соответственно): UPDATE Nach Information 15 SET Summa = Summa + 5;



UPDATE Nach Information 15 SET Summa = Summa - 5;.

Случай 1. Ни в одном из представлений не содержится раздел WITH CHECK

OPTION.

Допустим, был выполнен запрос U1 на увеличение начисленных сумм. После выполнения запроса U1 представление Nach Information 15 оказывается пустым. Его строки перестают удовлетворять условию представления Nach Information 20 и исчезают из него. Данные представления Nach Information 20 после выполнения запроса U1 показаны на рис. 5.23.

FACT

CODE

SUMMA

080613

10,60

080613

12,60

136159

8,30

080613

12,60

136159

8,30

Рис. 5.23. Данные представления Nach Information 20 после выполнения

запроса U1

Этот результат может быть неожиданным для пользователей базы данных, которым известно, что условие представления Nach Information 15 имеет вид Summa>15 и соблюдение этого условия должно сохраняться при увеличении размера начисления. В то же время в таблице NachislSumma обновляются значения полей NachislSum для 6 записей (с идентификаторами факта начисления 6, 21, 32, 34, 40, 50).

После выполнения запроса U2 представление Nach Information 15 также оказывается пустым. Данные представления Nach Information 20 после выполнения запроса U2 показаны на рис. 5.24.

FACT

CODE

SUMMA

136160

13,30

080047

14,56

080613

10,60

080613

12,60

136159

8,30

443690

12,80

126112

10,30

080613

12,60

015527

13,32

136159

8,30

136160

13,30

Рис. 5.24. Данные представления Nach Information 20 после выполнения

запроса U2



1 ... 67 68 69 [ 70 ] 71 72 73 ... 101

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика