Я пишу скрипт, который добавит столбец идентификатора в таблицу, включая все последовательности и триггеры, чтобы он автоматически обновлялся. Он будет выполнять следующие действия:Смешивание операторов DDL и DML в одном скрипте
- Добавить столбец в таблицу
- Создайте последовательность
- Создать триггер
- Обновление существующих строк, чтобы использовать последовательность значений
- Установите в поле не nullable
Проблема у меня есть с выделенной жирным шрифтом - это будет UPDATE
в сценарии DDL. Ошибки я получаю:
PLS-00103: Обнаружен символ "UPDATE"
Я попытался обертывание UPDATE
в блоке BEGIN
и END
, без успеха.
Можно ли включить оператор UPDATE
в сценарий DDL?
Вот что я до сих пор:
ALTER TABLE RETAILER ADD (RETAILER_ID NUMBER);
CREATE SEQUENCE RETAILER_ID_SEQ;
CREATE OR REPLACE TRIGGER RETAILER_ADD_TRG
BEFORE INSERT ON RETAILER
FOR EACH ROW
BEGIN
SELECT RETAILER_ID_SEQ.NEXTVAL INTO :new.RETAILER_ID FROM dual;
END;
-- Doesn't like this part...
UPDATE RETAILER SET RETAILER_ID = RETAILER_ID_SEQ.NEXTVAL;
COMMIT;
ALTER TABLE RETAILER MODIFY (RETAILER_ID NOT NULL);
Вам нужно '/' после инструкции 'create trigger': http: // stackoverflow. com/a/10207695/330315 –
Привет @a_horse_with_no_name, можете ли вы написать это как ответ, чтобы я мог принять его? Приветствия. – Eraph