Создание схемы
Функция
Определение оператора создания схемы.
Спецификация
::=
[AUTHORIZATION имя пользователя]
[DEFAULT CHARACTER SET имя кодировки]
Синтаксические правила
-
< Имя схемы >
должно быть уникально среди имен существующих схем, пользователей и ролей. -
Создание схемы допускается только для текущего пользователя, т.е. в опции
AUTHORIZATION
< имя пользователя >
должно быть именем текущего пользователя. -
Опция
DEFAULT CHARACTER SET
допустима, но в текущей версии игнорируется. Кодовая страница по умолчанию задаётся либо для БД в целом (set database default character set
), либо для каждого активного канала в отдельности (set names
). -
Опция
OR REPLACE
заставляет удалять существующую в БД схему и создавать её под тем же именем, но с указанными параметрами.Примечание
Если в схеме существуют объекты, то при выполнении команды OR REPLACE будет выдано сообщение 1513 «Пользователя (или схему) нельзя удалить без опции CASCADE из-за существующих объектов». Для удаления схемы совместно с объектами необходимо использовать команду «Удаление схемы» с опцией CASCADE.
-
Опция
IF NOT EXISTS
отменяет выполнение оператора, если указанная схема уже существует в БД.
Общие правила
-
Указывая имя схемы, пользователь может работать с любым объектом любой из своих схем и с объектами других пользователей при наличии соответствующих прав.
-
Без указания имени схемы допускается работа только с объектами текущей схемы.
-
Рекурсивные схемы не допускаются.
-
Для создания схемы требуется привилегия RESOURCE.
Пример
create or replace user TEST identified by '12345678'; grant resource to TEST; username TEST/12345678 create or replace schema SCHEMA1; create or replace table TEST(i int); insert into TEST values(1); !Должно вернуться значение 1 select * from TEST; | 1| set schema SCHEMA1; create or replace table TEST(i int); insert into TEST values(2); !Должно вернуться значение 2 select * from TEST; | 2| !Должно вернуться значение 1 select * from TEST.TEST; | 1| !Должно вернуться значение 2 select * from SCHEMA1.TEST; | 2| username SYSTEM/MANAGER8 drop user TEST cascade;