Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
 Аватар для F(r)an!k
31 / 31 / 4
Регистрация: 12.03.2010
Сообщений: 185

Триггеры

21.09.2010, 18:35. Показов 3967. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет =)
Нужен триггер,
которы либо
AFTER либо BEFORE
INSERT в табицу `test`
осуществляет запись
в таблицу `log`

Сердечная просьба:
положите сюда .sql файл
с созданием самих таблиц
и, разумеется, триггера.

p.s.
Обещаю за помощь 10 раз по +1

Благодарю за внимание =)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.09.2010, 18:35
Ответы с готовыми решениями:

Триггеры
Всем здрасте.Проблема:

Триггеры
Доброго времени суток. Есть проблема с триггером. Задание такое: разработать триггер на добавление записей к таблице, такой, чтобы...

Триггеры
Здравствуйте! База данных называется "mybd" Есть таблица "Заказы" с полями код_клиента, фио_клиента, код_номера, дата_заезда, дата_выезда....

7
 Аватар для Nazz
898 / 729 / 80
Регистрация: 12.03.2009
Сообщений: 2,804
Записей в блоге: 2
21.09.2010, 19:32
вопрос не понял(((
0
Почетный модератор
 Аватар для Humanoid
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
21.09.2010, 20:18
F(r)an!k, спасибо тебе, друг... благодаря тебе я посмотрел, что такое тригеры... а то всегда было интересно, но было лень посмотреть
Вот пример:
Например, есть таблица test с полем id AUTO_INCREMENT и полем a CHAR(10)
Есть таблица log с текстовым полем `s`
SQL
1
2
3
4
5
6
7
DELIMITER |
CREATE TRIGGER testtrig AFTER INSERT ON test
FOR EACH ROW BEGIN
  INSERT INTO log SET s=CONCAT('id=',NEW.id,',a=',NEW.a);
END;
|
DELIMITER ;
В результате теперь при каждом добавлении строки в таблицу test, у нас будет добавляться в log текстовое поле что-то вроде
SQL
1
INSERT INTO test SET a="Ляляля";
получится в столбце s таблицы log:
id=1,a=Ляляля

Обрати внимание, что тут используется DELIMITER... это нужно для того, что бы парсер не спотыкался об точку с запятой в середине запроса... просто этим DELIMITER'ом мы указываем, что конец запроса теперь обозначается через вертикальную черту, а не через точку с запятой. Но в конце опять возвращаем на точку с запятой.

А вообще на официальном сайте довольно подробно всё написано... только у меня с английским плохо и нужно сильно напрягаться, что бы прочитать
1
 Аватар для F(r)an!k
31 / 31 / 4
Регистрация: 12.03.2010
Сообщений: 185
23.09.2010, 11:58  [ТС]
SQL Error (1436)
Thread stack overrun: 7276 bytes used of a 131072 byte stack, and 128000 bytes needed. Use 'mysqld -O thread_stack=#' to specify a bigger stack.

Что-то не работает=) Это переводится ~ так:
Стек потоков переполнен: 7276 байт, используемых в 131072 байт стека, и 128000 байт требуется.

Примного благодарен за ответ (особенно за DELIMITER), но не мог бы ты выложить полный SHOW CREATE TABLE ?=)
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
23.09.2010, 13:04
Цитата Сообщение от F(r)an!k Посмотреть сообщение
SQL Error (1436)
Thread stack overrun: 7276 bytes used of a 131072 byte stack, and 128000 bytes needed. Use 'mysqld -O thread_stack=#' to specify a bigger stack
Надо изменить настройки, файл, кажется, my.cnf называется.
Вечером дома посмотрю точное название и настройки которые надо изменить. Сейчас не помню
0
Почетный модератор
 Аватар для Humanoid
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
23.09.2010, 14:26
Цитата Сообщение от F(r)an!k Посмотреть сообщение
не мог бы ты выложить полный SHOW CREATE TABLE ?=)
Создаём таблицы:
SQL
1
2
CREATE TABLE test (id INT AUTO_INCREMENT,a CHAR(10),PRIMARY KEY(id)) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
CREATE TABLE log (logid INT AUTO_INCREMENT,s CHAR(50),PRIMARY KEY(id)) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
Создаём триггер:
SQL
1
2
3
4
5
6
7
DELIMITER |
CREATE TRIGGER testtrig AFTER INSERT ON test
FOR EACH ROW BEGIN
  INSERT INTO log SET s=CONCAT('id=',NEW.id,',a=',NEW.a);
END;
|
DELIMITER ;
А теперь добавляем строку в таблицу test:
SQL
1
INSERT INTO test SET a='Ляляля';
Теперь смотрим содержимое таблицы log:
logid="1"
s="id=1,a=Ляляля"


Кстати, я не знаю, насколько хорошая идея выбирать имя таблицы log... ведь это ещё и логарифм. Поэтому лучше брать такие названия в кавычки ` (которые ставятся той же кнопкой, что и русская буква "ё"):
SQL
1
CREATE TABLE `log` (`logid` INT AU...
Но из-за чего появилась такая ошибка я не знаю... по идее, тут не должно быть такого. Может, глюк в какой-то версии MySQL... я использую последнюю версию 5.1.50
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
23.09.2010, 22:53
Цитата Сообщение от Humanoid Посмотреть сообщение
Но из-за чего появилась такая ошибка я не знаю... по идее, тут не должно быть такого. Может, глюк в какой-то версии MySQL... я использую последнюю версию 5.1.50
Там есть такой прикол, летом сталкивался, решается как раз исправлением файла конфигурации.

Добавлено через 7 часов 37 минут
Да, файл my.cnf там есть такие параметры
Code
1
2
3
4
5
6
7
8
9
10
skip-locking
key_buffer            = 16K
max_allowed_packet    = 1M
table_cache           = 4
join_buffer_size      = 2M
sort_buffer_size      = 256K
read_buffer_size      = 256K
read_rnd_buffer_size  = 256K
net_buffer_length     = 2K
thread_stack          = 512K
Выставьте их такими или больше
1
 Аватар для F(r)an!k
31 / 31 / 4
Регистрация: 12.03.2010
Сообщений: 185
05.10.2010, 14:23  [ТС]
Цитата Сообщение от Humanoid Посмотреть сообщение
CREATE TABLE log (logid INT AUTO_INCREMENT,s CHAR(50),PRIMARY KEY(id))
PRIMARY KEY должен быть logid, а не id

P.S. Для тех, кто будет юзать эту тему - обратите внимание =)

Добавлено через 28 минут
Всем спасибо за помощь!
Теперь работает=)
Правда после создания триггера
и первой записи прога (HeidiSQL)
зависла и вылетела.
Успехов!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.10.2010, 14:23
Помогаю со студенческими работами здесь

Триггеры
Как сделать в MYSQL, 2 триггера (на добавление и удаление).

Триггеры
Доброго дня! Люди, вопрос есть: вот я создаю триггер на вставку в таблицу refersto имени экзамена examName при вставке экзамена в таблицу...

Триггеры в MySQL
Здравствуйте уважаемые знатоки, и тем, кому в кайф помогать другим) Задачка у меня простенькая, есть табличка для техподдержки. Когда...

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

Mysql триггеры, добавление строки в ту же таблицу
ПРошу помочь в следующем: где подвох? ошибка выскакивает в версии 5.5 при попытке создать следующий триггер: CREATE OR REPLACE...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru