Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
1 / 1 / 2
Регистрация: 20.12.2016
Сообщений: 37
SQLite

Триггер для SQLite который срабатывает при удалении записи

17.12.2018, 23:15. Показов 3655. Ответов 6

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Подскажите пожалуйста, есть таблица resight в которой при удалении строки срабатывает триггер TR_AD_DAILY_ANIMAL на удаление записей в таблице daily, которые соответствуют r_year = old.r_year, animal_name = old.animal_name, site = old.site.
SQL
1
2
3
4
5
6
7
8
9
10
CREATE TRIGGER TR_AD_DAILY_ANIMAL
         AFTER DELETE
         ON resight
         FOR EACH ROW
BEGIN
    DELETE FROM daily
    WHERE r_year = OLD.r_year AND 
                animal_name = OLD.animal_name AND 
                site = OLD.site;
END;
Вопрос.
Возможно ли и как создать/применить триггер для таблицы daily, который будет так же срабатывать при удалении строк из неё триггером (TR_AD_DAILY_ANIMAL) из таблицы resight и копировать из удаляемых строк значение нужных столбцов (r_year, animal_name, site) в другую таблицу delete_animal_daily размещая данные в нужные столбцы (r_year, animal_name, site) этой таблицы? Количество столбцов в таблицах разное.

Добавлено через 1 час 14 минут
Пытаюсь делать так. Ничего не выходит.

T-SQL
1
2
3
4
5
6
7
8
9
CREATE TRIGGER TR_NEW
         AFTER DELETE
            ON daily
      FOR EACH ROW
BEGIN
    INSERT INTO delete_animal_daily (r_year, animal_name, site)
                                    SELECT (r_year, animal_name, site) 
                                      FROM daily;
END;
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.12.2018, 23:15
Ответы с готовыми решениями:

Django-сигнал / Sqlite-триггер при удалении пользователя
Здравствуйте! Помогите с созданием сабжа. На сайте есть комментарии. Соответственно, используется таблица User из стандартного Auth +...

При сохранению записи с формы процедурой SQL Server, срабатывает триггер, но без показа сообщеня
Здравствуйте! Имеется пустая форма, на которую я ввожу данные и клацаю по кнопке "Сохранить" Так вот, на эту кнопку повешена...

Нужен триггер, который будет обновлять одну таблицу при добавлении записи в другую
Нужен триггер, который срабатывает после того как добавлется запись в таблицу. Итак, имеется: Таблица Товар Таблица Производитель ...

6
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,230
18.12.2018, 00:23
Ну так выполняейте вставку в том же самом триггере перед удалением.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TRIGGER TR_AD_DAILY_ANIMAL
         AFTER DELETE
         ON resight
         FOR EACH ROW
BEGIN
    INSERT delete_animal_daily(r_year, animal_name, site)
              VALUES(OLD.r_year, OLD.animal_name, OLD.site);                                      
 
    DELETE FROM daily
    WHERE r_year = OLD.r_year AND 
                animal_name = OLD.animal_name AND 
                site = OLD.site;
END;
Добавлено через 8 минут
Ну логически правильнее выполнить вставку после удаления - перенесите код вставки ниже команды DELETE.
1
1 / 1 / 2
Регистрация: 20.12.2016
Сообщений: 37
18.12.2018, 00:24  [ТС]
Да простите не корректно объяснил задачу. Дело в том, что еще нужно добавить в таблицу delete_animal_daily значения из столбцов таблицы daily, которых нет в resight.
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,230
18.12.2018, 00:29
Каких именно?
Покажите структуру всех таблиц - daily, resight, delete_animal_daily.
1
1 / 1 / 2
Регистрация: 20.12.2016
Сообщений: 37
18.12.2018, 00:55  [ТС]
Таблица resight :
SQL
1
2
3
4
5
6
7
8
9
10
11
resight (
    r_year        INTEGER,
    site          INTEGER,
    animal_name   TEXT,
    brand_quality TEXT,
    sex_r         TEXT,
    STATUS        TEXT,
    comments      TEXT,
    control       INTEGER,
    datecreated   TEXT,
    idkey         INTEGER PRIMARY KEY AUTOINCREMENT
Таблица daily:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
daily (
    id          INTEGER,
    r_year      INTEGER,
    site        INTEGER,
    animal_name TEXT,
    r_date      TEXT,
    STATUS      TEXT,
    local_site  TEXT,
    comments    TEXT,
    observer    TEXT,
    datecreated TEXT,
    idkey       INTEGER PRIMARY KEY AUTOINCREMENT
Необходимо добавить значения столбцов таблицы daily в таблицу delete_animal_daily при срабатывании триггера удаления строк TR_AD_DAILY_ANIMAL из таблицы resight.

r_date ,
status ,
local_site ,
comments - отличается от comments таблицы resight ,
observer - отличается от observer таблицы resight,
datecreated - отличается от datecreated таблицы resight.

таблица delete_animal_daily:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
delete_animal_daily(
    id              INTEGER PRIMARY KEY AUTOINCREMENT,
    date_delete     TEXT,
    reason_delete   TEXT,
    observer_delete TEXT,
    r_year          INTEGER,
    site            INTEGER,
    animal_name     TEXT,
    r_date          TEXT,
    STATUS          TEXT,
    local_site      TEXT,
    comments        TEXT,
    observer        TEXT,
    datecreated     TEXT
Добавлено через 14 минут
т.е. скопировать значение столбцов из daily в таблицу delete_animal_daily при удалении, а удаление происходит по триггеру из таблицы resight. Остальные столбцы в delete_animal_daily останутся пустыми или подставлю необходимый VALUES (которых нет в daily).
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,230
18.12.2018, 01:15
Лучший ответ Сообщение было отмечено oihoo как решение

Решение

Что-то вроде этого.
тут был скрипт

Добавлено через 7 минут
Пардон, неверно, вот так:
SQL
1
2
3
4
5
6
7
INSERT delete_animal_daily(r_date, STATUS, local_site, comments, observer, datecreated, r_year, animal_name, site)
              SELECT d.r_date, d.status, d.local_site, '', '', DATE('now'), OLD.r_year, OLD.animal_name, OLD.site
              FROM daily d WHERE
                             d.r_year = OLD.r_year AND 
                             d.animal_name = OLD.animal_name AND 
                             d.site = OLD.site
              LIMIT 1;
1
1 / 1 / 2
Регистрация: 20.12.2016
Сообщений: 37
18.12.2018, 19:27  [ТС]
Все получилось! Спасибо за урок!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.12.2018, 19:27
Помогаю со студенческими работами здесь

Написать триггер для автоматического обновления поля при обновлении, удалении, добавлении записей в таблице
Добавить в таблицу «Продавцы» поле «Суммарный вес продаж» и написать триггер для автоматического обновления этого поля при обновлении,...

Как создать триггер который обновляет запись в таблицы при добавлении записи в другую таблицу
Всем привет, нужна помощь с триггером, столкнулся с ним в первые до этого использовал процедуры, а диплом горит) История такая: ...

Создать триггер на таблицу sdelka, который, при добавлении новой записи, добавит эту запись в другую
пытаюсь научиться создавать триггеры в бд, и т.к я полный чайник, мало чего получается. задача такая: создать триггер на таблицу...

Написать триггер срабатывающий при удалении
Нужно написать триггер. Суть: Есть две таблицы: пользователи, в которой есть колонка "GroupFlag", если там true, значит запись...

Реализовать триггер, обеспечивающий при удалении ограничение целостности
Здравствуйте,уважаемые! Никак не могу разобраться с триггером...уже весь интернет перерыл( Помогите,пожалуйста, с созданием триггера. ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
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
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru