Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
 Аватар для ВасильевСА
8 / 8 / 2
Регистрация: 01.12.2015
Сообщений: 195
Interbase

Создание триггера

21.11.2016, 11:22. Показов 1127. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый! Уважаемые форумчане, подскажите бестолковому как правильно написать триггер!? К примеру: есть два числовых поля (F1, F2), после вставки значений в эти поля, нужно в третье поле (F3) вставить значения 2х первых полей в строковом типе как F3 = F1 + '_' + F2. Понимаю что триггер нужно написать "после вставки" и по всей видимости в триггере писать нужно команду редактировать, а не вставку; объявить переменные... Не могу сообразить. Благодарен за каждую подсказку!

SQL
1
2
3
4
5
6
CREATE OR ALTER TRIGGER direction_ai FOR direction
active after INSERT POSITION 0
AS
BEGIN
/* ??? */
END
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.11.2016, 11:22
Ответы с готовыми решениями:

Создание триггера
Привет всем! Помогите пожалуйста есть бд Библиотека которую я делал в DBForge(MySql) Нужно написать такой триггер чтобы при добавлении...

Создание триггера при добавлении в таблицу данных
Пытаюсь создать триггер, который при добавлении данных будет заносить добавленную троку в другую таблицу с историей операций. CREATE...

Вызов триггера
Здравствуйте, у меня имееться БД(MySQL) подключёная через SQLConnection->SimpleDataSet.... мне надо написать триггер (что я и сделал),...

4
5978 / 4553 / 1095
Регистрация: 29.08.2013
Сообщений: 28,180
Записей в блоге: 3
21.11.2016, 11:43
1. синтаксис триггера зависит от СУБД
2. вычисляемое поле не поможет?
0
 Аватар для ВасильевСА
8 / 8 / 2
Регистрация: 01.12.2015
Сообщений: 195
21.11.2016, 12:15  [ТС]
Как я понимаю вычисляемое поле только для чисел, а мне нужно числовые данные перевести в строку, например в 1 поле - 25 (число), во втором поле 48 (число), третье поле должно содержать "25_48" (строка).

Добавлено через 1 минуту
Firebird 2.5

Добавлено через 27 минут
SQL
1
2
3
4
5
6
7
8
CREATE OR ALTER TRIGGER direction_ai FOR direction
active after INSERT POSITION 0
AS
BEGIN
    UPDATE direction
    SET UIN_DIRECTION = ID_PATIENT_DIRECTION + ID_DIRECTION /* Эти данные нужно сложить не математически, а как строку */
    WHERE ID_DIRECTION = gen_id(gen_direction_id, 0);
END
Подскажите как объявить переменную типа строка и где? Спасибо!
0
5978 / 4553 / 1095
Регистрация: 29.08.2013
Сообщений: 28,180
Записей в блоге: 3
21.11.2016, 12:29
а вы пробовали
Создаем таблицу:
SQL
1
2
3
4
5
CREATE TABLE TABLE1
(
  VALUE_IN INTEGER,
  RESULT COMPUTED BY (VALUE_IN * 100)
);
Если вводим запись:
SQL
1
INSERT INTO TABLE1 (VALUE_IN) VALUES ('100');
То при селекте:
SQL
1
SELECT * FROM TABLE1;
получим:
SQL
1
2
VALUE_IN RESULT
100 10000
сделать такое поле как вам надо?
0
 Аватар для ВасильевСА
8 / 8 / 2
Регистрация: 01.12.2015
Сообщений: 195
21.11.2016, 13:14  [ТС]
SQL
1
2
3
4
5
6
AS
BEGIN
    UPDATE direction
    SET UIN_DIRECTION = CAST(ID_PATIENT_DIRECTION AS VARCHAR(9)) + '-' + CAST(ID_DIRECTION AS VARCHAR(9))
    WHERE ID_DIRECTION = gen_id(gen_direction_id, 0);
END
вот так ругается (((, одну переменную преобразует в строку, а если две и сложить то ругается:

Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.
Dynamic SQL Error.
expression evaluation not supported.
Strings cannot be added or subtracted in dialect 3.

Добавлено через 1 минуту
Неудачное исполнение вызвано системной ошибкой, которая исключает успешное выполнение последующих операторов.
Динамический SQL Error.
вычисление выражения не поддерживается.
Строки не могут быть добавлены или вычитаются в диалекте 3.

Добавлено через 17 секунд
Как быть?

Добавлено через 10 минут
Всем спасибо, разобрался!

Вдруг кому пригодится:

SQL
1
2
3
4
5
6
AS
BEGIN
    UPDATE direction
    SET UIN_DIRECTION = CAST(ID_PATIENT_DIRECTION AS VARCHAR(9)) || '-' || CAST(ID_DIRECTION AS VARCHAR(9))
    WHERE ID_DIRECTION = gen_id(gen_direction_id, 0);
END
при слиянии строк, нужно применять не знак сложения, а знак конкатенации ||
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.11.2016, 13:14
Помогаю со студенческими работами здесь

Создание триггера
Здравствуйте, имеется приложение на .net, в котором в при регистрации пользователя добавляются в таблицу БД Oracle. Теперь мне...

Создание триггера
Добрый день, прошу помощи. Данные в таблицу Dynamics_of_indicatros поступают раз в месяц. Запись за 1 месяц содержит данные: Дата, Код...

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

создание триггера
внутри цикла необходимо разместить два запроса - первый на добавление записи в одну таблицу, второй на апдейт другой после вставки в...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru