ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 02.04.2021
Просмотров: 1446
Скачиваний: 4
136
п ользов а телям
п рав а
на
осущ еств ление
з а п росов
к
та блице
EXAM_MARKS
.
118.
О тмените
п рив илегию
INSERT
п о
отношению
к
та блице
STUDENT
у
п ользов а теля
IVANOV
и
у
в сех
д ругих
п ользов а телей
,
которым
п рив илегия
,
в
св ою
оч еред ь
,
была
п ред оста в лена
э тим
п ользов а телем
IVANOV
.
119.
Перед а йте
п ользов а телю
SIDOROV
п рав о
в ып олнять
оп ерации
в ста в ки
или
обнов ления
д ля
та блицы
UNIVERSITY
,
но
только
д ля
з а п исей
об
унив ерситета х
,
з на ч ения
рейтингов
которых
лежа т
в
д иа п а з оне
от
300
д о
400.
120.
Ра з решите
п ользов а телю
PETROV
д ела ть
з а п росы
к
та блице
EXAM_MARKS
,
но
з а п ретите
ему
из менять
в
э той
та блице
з на ч ения
оценок
студ ента м
,
имеющ им
неуд ов летв орительные
(=2)
оценки
.
6.10.
С оз дание
синоним ов
(
SYNONYM
)
К а жд ый
раз
п ри
ссылке
к
ба з ов ой
та блице
или
п ред ста в лению
,
не
яв ляющ имися
собств енностью
п ользов а теля
,
требуется
уста нов ить
в
ка ч еств е
п рефикса
к
имени
э той
та блицы
имя
ее
в ла д ельца
,
п оскольку
система
не
сможет
оп ред елить
местона хожд ение
та блицы
,
та к
ка к
у
раз ных
п ользов а телей
могут
ока з а ться
та блицы
с
од ина ков ыми
имена ми
.
Исп ользов а ние
д линных
имен
с
п рефикса ми
может
ока з а ться
неуд обным
.
Поэ тому
большинств о
реа лиз а ций
SQL
п оз в оляют
соз д а в а ть
д ля
та блиц
синонимы
(
ч то
не
яв ляется
ста нд а р том
ANSI).
Си но ни м
–
э то
а льтерна тив ное
имя
та блицы
.
Пр и
соз д а нии
синонимов
п ользов а тель
ста нов ится
его
собств енником
,
п оэ тому
необход имость
исп ользов а ния
п рефикса
к
имени
та блицы
д ля
него
отп а д а ет
.
Пользов а тель
имеет
п ра в о
соз д а в а ть
синоним
д ля
та блицы
,
если
он
имеет
,
п о
кра йней
мере
,
од ну
п рив илегию
в
од ном
или
более
столбца х
э той
та блицы
.
С
п омощ ью
кома нд ы
CREATE
SYNONYM
п ользов а тель
IVANOV
может
д ля
та блицы
с
именем
PETROV
.
STUDENT
соз д а ть
синоним
с
именем
CLIENTS
след ующ им
образ ом
.
CREATE SYNONYM
CLIENTS
FOR
PETROV
.
STUDENT
;
137
Теп ерь
п ользов а тель
IVANOV
может
исп ользов а ть
та блицу
с
именем
CLIENTS
в
кома нд е
точ но
та к
же
,
ка к
имя
PETROV
.
STUDENT
.
К а к
уже
гов орилось
,
п рефикс
п ол ьзов а теля
–
э то
фа ктич ески
ч а сть
имени
любой
та блицы
.
Всякий
раз
,
когд а
п ользов а тель
не
ука з ыв а ет
собств енное
имя
в месте
с
именем
св оей
та блицы
, SQL
п о
умолч а нию
п од ста в ляет
ид ентифика тор
п ользов а теля
в
ка ч еств е
п рефикса
имени
та блицы
.
След ов а тельно
,
д в а
од ина ков ых
имени
та бл ицы
,
но
св яз а нные
с
раз лич ными
в ла д ельца ми
,
ста нов ятся
неид ентич ными
и
,
след ов а тельно
,
не
п рив од ят
к
ка кой
-
либо
п ута нице
в
з а п роса х
.
Та ким
обра з ом
,
д в а
п ользов а теля
могут
соз д а в а ть
д в е
п олностью
неза в исимые
та блицы
с
од ина ков ыми
имена ми
,
но
э то
та кже
оз на ч а ет
,
ч то
од ин
п ользов а тель
может
соз д а ть
п ред ста в ление
,
основ а нное
на
имени
,
стоящ ем
п осле
имени
та блицы
,
и
исп ользуемым
д ругим
п ользов а телем
.
Э то
иногд а
д ела ется
в
случ а ях
,
когд а
п ред ста в ление
исп ользуется
ка к
з а мена
са мой
исход ной
та блицы
,
на п ример
,
если
п ред ста в ление
п росто
исп ользует
CHECK
OPTION
ка к
з а менитель
огранич ения
CHECK
в
ба з ов ой
та блице
.
М ожно
та кже
соз д а в а ть
собств енные
синонимы
п ол ьзов а теля
,
имена
котор ых
буд ут
та кими
же
,
ка к
и
п ерв она ч а льные
имена
та блиц
.
Н а п р имер
,
п ользов а тель
PETROV
может
оп ред елить
имя
STUDENT
ка к
св ой
синоним
д ля
та блицы
IVANOV
.
STUDENT
с
п омощ ью
з а п р оса
:
CREATE
SYNONYM
STUDENT
FOR
IVANOV
.
STUDENT
;
С
точ ки
з рения
SQL,
теп ерь
имеются
д в а
ра з ных
имени
од ной
та блицы
:
IVANOV
.
STUDENT
и
PETROV
.
STUDENT
.
О д на ко
ка жд ый
из
э тих
п ользов а телей
может
обращ а ться
к
д а нной
та блице
,
исп ользуя
имя
STUDENT
. SQL,
ка к
гов орилось
в ыше
,
са м
д оба в ит
к
э тому
имени
нед оста ющ ие
имена
п ользов а телей
в
ка ч еств е
п рефиксов
.
138
6.11.
С иноним ы
общ его
пол ь з ования
(PUBLIC)
Е сли
п ла нируется
исп ользов а ть
та блицу
STUDENT
большим
ч ислом
п ользов а телей
,
уд обнее
,
ч тобы
в се
п ользов а тели
ссыла лись
к
ней
с
п омощ ью
од ного
и
того
же
имени
.
Э то
д а ст
в оз можность
,
на п ример
,
исп ользов а ть
ука з а нное
имя
без
огранич ений
в
п рикла д ных
п рогра мма х
.
Ч тобы
соз д а ть
ед иное
имя
д ля
в сех
п ользов а телей
,
соз д а ется
общ ий
синоним
.
Н а п ример
,
если
в се
п ользов а тели
буд ут
в ыз ыв а ть
та бл ицу
STUDENT
с
д а нными
о
студ ента х
,
можно
п р исв оить
ей
о бщи й
синоним
STUDENT
след ующ им
образ ом
:
CREATE
PUBLIC
SYNONYM
STUDENT
FOR
STUDENT
;
О бщ ие
синонимы
в
основ ном
соз д а ются
в ла д ельца ми
объектов
или
п ользов а телями
с
п рив илегиями
а д министратора
ба з ы
д а нных
(
п ользов а тель
DBA
).
Д р угим
п ользов а телям
п р и
э том
д олжны
быть
п ред оста в лены
соотв етств ующ ие
п р ив илегии
в
та блице
STUDENT
,
ч тобы
она
была
им
д оступ на
.
Д а же
если
имя
яв ляется
общ им
,
са ма
та блица
общ ей
не
яв ляется
.
6.12.
Удал ение
синоним ов
О бщ ие
и
д ругие
синонимы
могут
уд а ляться
кома нд ой
DROP
SYNONYM
.
Синонимы
могут
уд а ляться
только
их
в ла д ельца ми
,
кр оме
общ их
синонимов
,
которые
могут
уд а ляться
соотв етств ующ ими
п рив илегиров а нными
п ользов а телями
(
обыч но
э то
п ользов а тели
DBA
).
Ч тобы
уд а лить
,
на п ример
,
синоним
CLIENTS
,
когд а
в место
него
уже
п ояв ился
общ ий
синоним
STUDENT
,
п ользов а тель
может
в в ести
кома нд у
DROP SYNONYM
CLIENTS
;
139
7.
Упр а влен и е
тр а н за к
ци ями
В
п роцессе
в ып олнения
п ослед ов а тельности
кома нд
SQL
та блицы
ба з ы
д а нных
не
в сегд а
могут
на ход иться
в
согла сов а нном
состоянии
.
В
случ а е
в оз никнов ения
ка ких
-
либо
сбоев
,
когд а
логич ески
св яз а нна я
п ослед ов а тельность
з а п р осов
не
д ов ед ена
д о
конца
,
в оз можно
на р ушение
целостности
д а нных
в
ба з е
.
Д ля
обесп еч ения
целостности
д а нных
логич ески
св яз а нные
п ослед ов а тельности
з а п росов
,
нед елимые
с
точ ки
з рения
в оз д ейств ия
на
ба з у
д а нных
,
объед иняют
в
та к
на з ыв а емые
т р а нза кци и
.
За п росы
,
соста в ляющ ие
транз а кцию
,
д олжны
или
в ып олняться
в се
п олностью
–
с
п ерв ого
д о
п ослед него
,
и
тогд а
транз а кция
з а в ер ша ется
кома нд ой
COMMIT
,
или
,
если
в
силу
ка ких
-
либо
в нешних
п р ич ин
э то
ока з ыв а ется
нев оз можным
,
в несенные
з а п роса ми
транз а кции
из менения
в
ба з е
д а нных
д олжны
а ннулиров а ться
кома нд ой
ROLLBACK
.
Во
в тором
случ а е
ба з а
д а нных
в оз в ращ а ется
в
целостное
состояние
на
момент
,
п ред шеств ующ ий
на ч а лу
транз а кции
.
Э то
на з ыв а ют
о т ка т о м
транз а кции
.
Н ов а я
транз а кция
на ч ина ется
п осле
ка жд ой
кома нд ы
COMMIT
или
ROLLBACK
.
В
большинств е
реа лиз а ций
можно
уста нов ить
п а р а метр
,
на з ыв а емый
AUTOCOMMIT
.
О н
буд ет
а в тома тич ески
з а п омина ть
в се
в ып олняемые
д ейств ия
на д
д а нными
.
Д ейств ия
,
которые
п рив ед ут
к
ошибке
п ри
неза в ершенной
транз а кции
,
в сегд а
буд ут
а в тома тич ески
“отка та ны”
обра тно
.
Имеется
в оз можность
уста нов ки
режима
AUTOCOMMIT
а в тома тич ески
п ри
р егистрации
.
Е сли
сеа нс
п ользов а теля
з а в ерша ется
а в а рийно
,
на п ример
,
п роиз ошел
сбой
системы
или
в ып олнена
п ер еза груз ка
п ользов а теля
,
то
текущ а я
транз а кция
в ып олнит
а в тома тич еский
отка т
из менений
.
Э то
–
од на
из
в оз можностей
уп ра в ления
в ып олнением
д иа логов ой
обработки
з а п росов
п утем
ра з д еления
кома нд
на
большое
колич еств о
ра з лич ных
тр а нз а кций
.
О д иноч на я
транз а кция
не
д олжна
сод ержа ть
слишком
много
несв яз а нных
кома нд
,
на
п рактике
она
ч а сто
состоит
из
ед инств енной
кома нд ы
.
Х орошее
п рав ило
,
которому
можно
след ов а ть
–
это
соз д а в а ть
транз а кции
из
од ной
кома нд ы
или
нескольких
близ ко
св яз а нных
кома нд
.
Н а п ример
,
требуется
уд а лить
св ед ения
о
студ енте
п о
фа милии
‘
Ива н о в
’
из
ба з ы
д а нных
.
Прежд е
,
ч ем
св ед ения
из
та блицы
STUDENT
буд ут
уд а лены
,
140
требуется
осущ еств ить
оп ред еленные
д ейств ия
с
д а нными
об
э том
студ енте
в
д ругих
та блица х
,
в
ч а стности
с
д а нными
о
его
оценка х
.
Н еобход имо
уста нов ить
соотв етств ующ ее
э тому
студ енту
п оле
STUDENT
_
ID
в
та блице
EXAM
_
MARKS
в
NULL
.
После
э того
можно
уд а лить
з а п ись
об
э том
студ енте
из
та блицы
STUDENT
.
Э ти
д ейств ия
в ып олняются
с
п омощ ью
д в ух
з а п р осов
UPDATE
EXAM
_
MARKS
SET
STUDENT
_
ID
=
NULL
WHERE
STUDENT
_
ID
=
1004
;
DELETE
FROM
STUDENT
WHERE
STUDENT
_
ID
=
1004
;
Е сли
в оз ника ет
п роблема
с
уд а лением
з а п иси
о
студ енте
с
фа милией
‘
Ива н о в
’
(
в оз можно
,
имеется
д ругой
в нешний
кл юч
,
ссыла ющ ийся
на
него
,
о
котором
не
было
из в естно
,
и
,
соотв етств енно
,
не
уч тено
п ри
уд а лении
),
можно
было
бы
отменить
в се
сд ела нные
из менения
,
п о
кра йней
мере
,
д о
тех
п ор
,
п ока
п роблема
не
буд ет
решена
.
Д ля
э того
п рив ед енную
гр уп п у
кома нд
след ует
обраба тыв а ть
ка к
од иноч ную
тра нз а кцию
,
п ред усма трив а я
ее
з а в ершение
с
п омощ ью
кома нд ы
COMMIT
или
ROLLBACK
–
в
з а в исимости
от
результа та
.
УП Р АЖ НЕ НИ Я
121.
Вы
п еред а ли
п ра в о
SELECT
в
та блице
EXAM
_
MARKS
п ользов а тел ю
IVANOV
.
Вв ед ите
кома нд у
та к
,
ч тобы
в ы
могли
ссыла ться
к
э той
та блице
,
ка к
к
EXAM
_
MARKS
,
не
исп ользуя
имя
IVANOV
в
ка ч еств е
п рефикса
.
122.
Е сли
п роиз ойд ет
сбой
п ита ния
,
ч то
случ ится
со
в семи
из менениями
,
сд ела нными
в о
в ремя
текущ ей
тра нз а кции
?