Перейти к содержимому

Фото
- - - - -

TRIGGER


  • Вы не можете создать новую тему
  • Please log in to reply
6 ответов в этой теме

#1 Pelotka

Pelotka
  • Пользователь
  • 313 сообщений

Отправлено 25 Сентябрь 2008 - 15:31

Всем добрый вечер!

сопственно вот код:

CREATE TRIGGER auto1 AFTER INSERT ON Linnad FOR EACH ROW INSERT INTO logitable (auto_id, toiming, aeg, mark, aasta, linna_id, kasutaja) VALUES (( select auto_id from autod ORDER BY auto_id limit 1), [], curdate(), (SELECT mark FROM autod ORDER BY auto_id DESC limit 1), (SELECT aasta FROM autod ORDER BY auto_id DESC limit 1;), (SELECT reg_piirkond FROM autod ORDER BY auto_id DESC limit 1), (SELECT USER()));

Цель такая:
Зделать Триггер, каторый проверяет INSERT, DELETE, UPDATE и пишет какое действие было зделано в это место , [].
На данный момент вижу вариантом создать 3 разных Триггера, но это резервный план :) Может кто знает, как зделать это в одном Триггере?

Буду очень признателен за любые ответы и помощь в поисках решения проблемы!
  • 0

#2 Voland

Voland
  • Пользователь
  • 272 сообщений

Отправлено 25 Сентябрь 2008 - 15:49

Если не ошибаюсь, нельзя сделать на одном. Выдели основной кусок кода в хранимую процедуру а из соответствующих тиггеров вызывай передавая в качестве параметра - INSERT, DELETE, UPDATE.

upd:
Хм, правда данные тоже придется передавать.

Сообщение изменено: Voland (25 Сентябрь 2008 - 15:52 )

  • 0

#3 Cryptoboy

Cryptoboy
  • Пользователь
  • 280 сообщений

Отправлено 25 Сентябрь 2008 - 16:10

Какая база то? :)

например в PostgreSQL это будет примерно так :
CREATE TRIGGER mymegatrigger AFTER INSERT OR UPDATE OR DELETE ON ....
  • 0

#4 Pelotka

Pelotka
  • Пользователь
  • 313 сообщений

Отправлено 25 Сентябрь 2008 - 16:10

mysql 5.1

Сообщение изменено: BugaTTy (25 Сентябрь 2008 - 16:12 )

  • 0

#5 Cryptoboy

Cryptoboy
  • Пользователь
  • 280 сообщений

Отправлено 25 Сентябрь 2008 - 16:13

судя по этому
http://dev.mysql.com...te-trigger.html

в mysql на один триггер нельзя повесить сразу 2 евента ...
  • 0

#6 Pelotka

Pelotka
  • Пользователь
  • 313 сообщений

Отправлено 25 Сентябрь 2008 - 16:14

Какая база то? :)

например в PostgreSQL это будет примерно так :
CREATE TRIGGER mymegatrigger AFTER INSERT OR UPDATE OR DELETE ON ....

можно написать так:
CREATE TRIGGER auto1 AFTER INSERT, UPDATE, DELETE ON.......


но что и как написать тогда ниже?
  • 0

#7 lanoche

lanoche
  • Новобранец
  • 2 сообщений

Отправлено 22 Октябрь 2008 - 09:42

1.Необходимо создать таблицу, которая должна иметь ту же структуру, что и исходная таблица и еще поля: имя пользователя, дата время выполнения изменения записи, название операции.
2. Для этого используется понятие Наследование (INHERITS).
3. Создать триггерную функцию, а затем и сам триггер.


P.S - для достижения лучших результатов желательно сделать проверку на корректный ввод данных.
  • 0