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

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

17.12.2018, 23:15. Показов 3609. Ответов 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,228
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,228
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,228
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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru