Триггер на уровне БД.
Любые проверки, любые условия. Меняете значение в бд как хотите.
Изменение значений при изменении записи
Re: Изменение значений при изменении записи
***
Тружусь как пчелка
***
SQL,BpmOnline,Creatio,BpmSoft,.NET,SAP WMS,MS SQL Server,Windows Server,IIS
Тружусь как пчелка
***
SQL,BpmOnline,Creatio,BpmSoft,.NET,SAP WMS,MS SQL Server,Windows Server,IIS
Re: Изменение значений при изменении записи
А не могли бы про триггер немного проконсультировать:remchik писал(а): 11 фев 2021, 12:11 Триггер на уровне БД.
Любые проверки, любые условия. Меняете значение в бд как хотите.
Решил для начала (посмотреть как с ним работать)- Создал триггер который должен вносить изменение в только что отредактированную запись (допусти заполнить поле 166 значением 12):
Имя таблицы - app_entity_80
Время: AFTER (BEfore Тож пробывал)
Событие Update
Определение (нашел примеры в интеренете):
UPDATE app_entity_80
SET field_166 = '12'
FROM inserted
WHERE SomeTable.Id = inserted.Id
И тут сразу ошибка даже не позволяет сохранить триггер! (хотя все инструкции говорят что метод Update содержит техническую таблицу inserted)
Далее пытаюсь экспериментировать (тупо внести изменение во все записи при изменении в одной записи - на что тригер обычно и заточен)
пишу
UPDATE app_entity_80
SET field_166 = '12'
И тут возникает уже ошибка при изменении записи:
Database Error: 1442 - Can't update table 'app_entity_80' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Не могли бы привести пример как написать так чтобы при изменении конкретной записи - в эту самую запись вносились изменения!
А вообще идея следующая - передать значение поля в записи, когда мы через поле Связанные записи строим связь с другой записью (так как в данном случаи когда мы строим связь через Связанные записи создается значение в спецтаблице и благодаря появлению в ней записи и отследить запуск триггера (в конкретном случаи хочу передавать права доступа))
Имя таблицы - app_related_items_79_80
Время: AFTER (BEfore Тож пробывал)
Событие Insert
Определение (нашел примеры в интеренете):
UPDATE app_entity_80
SET field_166 = (select app_entity_79.field_167 from app_entity_79 where app_entity_79.id = (Тут не знаю что написать думал еще вложенный запрос для поиска в id в app_related_items_79_80 - но и там я упрусь в непонятность как найти именно текущую запись ))
.... (и тут не понятно какое условие выбрать)
Почему то если указать что то типа WHERE app_related_items_79_80.Id = inserted.Id - ругается что нет столбца inserted, а если указать что FROM inserted, то уже ругается что нет таблицы inserted (хотя по учебникам такая таблица вроде как создается в момент добавления изменения записи)
PS ссори много текста)