Oracle: создайте таблицу в другой схеме и предоставьте выбор и вставьте в нее из той же схемы - PullRequest
1 голос
/ 06 февраля 2012

У меня есть две схемы.

1.Схема А

2.Схема В

Мне нужно сделать следующее.

  1. Я хочу создать несколько таблиц в схеме B (так же, как некоторые таблицы в A )
  2. Затем переместите данные из A в B .

Теперь я хочу сделать ВСЕ это из схемы A .Я написал пакет, который при выполнении в A создаст все таблицы в B , а затем создаст для них синонимы в A .А затем просто выберет данные из своих собственных таблиц и вставит их в B's таблиц.

VERY IMP: Nowвсе это должно произойти за один раз.Только выполнение одного начального блока должно выполнить всю работу.

Проблема: Но теперь синонимы не будут работать, потому что схема A не имеет привилегий в таблицах, созданных в B .

, поэтому есть способ создания таблиц (от A до B)со всеми привилегиями, данными во время создания?Или схемы могут быть переключены в PL-SQL во время выполнения, так что привилегии могут быть предоставлены от B до A?(Я уверен, что это не может быть сделано, но нет ничего невозможного, они говорят!: O: P, так спрашивая)

Пожалуйста, помогите мне, ребята!Все предложения приветствуются!

Основная цель этой работы - выполнить ее за один раз и только из одной схемы.

1 Ответ

3 голосов
/ 06 февраля 2012

Вы можете определить процедуру, которая будет выполняться с определенными правами вместо прав вызывающего абонента

CREATE OR REPLACE PROCEDURE definer_test AUTHID DEFINER IS 
BEGIN
    ...
END definer_test;

Вы должны определить такую ​​процедуру в схеме B, которая выполняет эту работу, и вызвать ее из схемы A.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...