Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 271

Как правильно написать триггер

14.06.2019, 13:16. Показов 823. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть у меня таблица в базе, куда записываются изменения других таблиц.
SQL
1
2
3
4
5
6
7
8
CREATE TABLE TABLECHANGEHISTORY
(
  TABLENAME     VARCHAR2(512 CHAR),
  MODIFIEDDATE  DATE,
  OBJIDS        VARCHAR2(4000 CHAR)
);
 
CREATE INDEX I_TCHIST_TNMODIFIED ON TABLECHANGEHISTORY (TABLENAME, MODIFIEDDATE);
Далее мне нужно сделать еще одну таблицу чтобы отслеживать изменения.
Создаём таблицу

SQL
1
2
3
4
CREATE TABLE last_changes ( tablename VARCHAR,
                            ts_change TIMESTAMP,
                            ts_get TIMESTAMP,
                            PRIMARY KEY (tablename) )
Создаём триггер фиксации факта изменения рабочих таблиц (вернее, поступления записи о таком изменении в таблицу истории изменений)
Вот тут ошибка у меня, Оракл не воспринимает команду
SQL
1
2
3
4
5
6
7
8
9
10
11
CREATE TRIGGER fix_changes
AFTER INSERT ON TableChangeHistory 
AS
MERGE INTO last_changes
USING (UPDATED.*) 
ON (tablename)
WHEN MATCHED THEN     -- имя уже присутствует, обновляем
    UPDATE SET ts_change = UPDATED.ModifiedDate
WHEN NOT MATCHED THEN -- имя отсутствует - вставляем
    INSERT (tablename, ts_changed, ts_get)
    VALUES (UPDATED.TableName, UPDATED.ModifiedDate, UPDATED.ModifiedDate)
Ошибка возникает в AS и как мне исправлять это, чтобы оракл это принял.

Теперь ,я могу использовтаь такой запрос. Когда необходимо получить сведения об изменившихся таблицах (вернее, просто список таких таблиц), выполняем
SQL
1
2
3
4
UPDATE last_changes 
SET ts_get = CURRENT_TIMESTAMP
WHERE ts_change >= ts_get -- только изменившиеся после предыдущего запроса
RETURNING (tablename)
Как подправить триггер чтобы он заработал.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.06.2019, 13:16
Ответы с готовыми решениями:

Как правильно написать Триггер?
есть две таблицы articles с полями(`id`, `text`, `title`, `add_date`) и comments(`id_comments`, `id_articles`, `user_name`, `comment`,...

Как правильно надо создавать триггер
Нужно создать триггер , у меня есть 2 таблички, create table vra4i(vnum number primary key,special varchar2(30),vfio varchar2(30)); ...

Как написать триггер на 2 таблицы?
Хочу написать триггер, который будет для определенного ФИО, и при полученном результате, изменять результат. Существуют 2 таблицы: ...

2
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
14.06.2019, 13:25
Цитата Сообщение от Мдфв1234 Посмотреть сообщение
Ошибка возникает в AS
А ты, когда пишешь какую-то программу, не читаешь книжки/доку по данному языку? Никакого AS в триггерах нет.
SQL
1
2
3
4
5
6
7
8
9
CREATE TRIGGER fix_changes
AFTER INSERT ON TableChangeHistory 
 
DECLARE  -- если есть объявление переменных
......
 
BEGIN
...
END;
0
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 271
14.06.2019, 13:27  [ТС]
Ну вот я тут новичек, с примерами разбираюсь, но мне нужно как-то сделать так ,чтобы эта логика работала в оракле.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.06.2019, 13:27
Помогаю со студенческими работами здесь

Триггер не правильно работает
При заполнении таблицы zamovlennya говорит что поля NEW.zamovlennya.tarif_has_company_tarif_id_tarif не существует. Да его не...

Правильно ли написан триггер?
Create trigger T1 ON Список_Процедур Instead of insert as Insert into Список_Процедур select Список_Процедур.N_Записи,...

Правильно ли добавлен триггер?
Доброго времени суток. У меня появилась необходимость добавления триггера. Имеется: менюбар с кнопками, одна из которых должна...

Не правильно срабатывает триггер в теге style
Пишу проект используя шаблон MVVM для WPF. У меня есть 10 кнопок для ввода цифр. К ним привязаны биндинги команд и биндинг на стиль из...

Почему синхронный JK триггер работает не правильно?
На микросхеме 7472 я собрал синхронный JK триггер. Он должен переключаться сразу после импульса, то есть по заднему фронту. Он же...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru