powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Помогите с написанем триггера
4 сообщений из 4, страница 1 из 1
Помогите с написанем триггера
    #33056527
Фотография Dimyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите пожалуйста разобратся с написанием триггера
После FireBird тяжеловато синтаксис в ASA дается
Суть такова:
В накладной должно анализироватся поле внешнего ключа car_send_id (каждая накладная привязана к какой то машине на которой едет груз по этой накладной) и изменения записывать в таблицу истории перегрузок с машины в машину т.е. когда товар идет по транзиту, а когда город следования машины совпадает с городом назначения накладной в историю записывается что груз приехал
Попоробывал написать следующие, но пишет что синтаксическая ошибка :(
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE TRIGGER "order_history" after update order  1  on DBA.orders
referencing old as old_name new as new_name
for each row 
begin
  if(new_name.car_send_id <> old_name.car_send_id) then
  begin
    select cities_list.id,cities_list.city_name as city 
     from orders 
     key join cars 
     join cities_list on cities_list.id = cars.city_id
     where orders.id = new_name.id  

       if new_name.city_id = cities_list.id then
        insert into "history" (ord_id, "action") values (new_name.id, 'Приехали');
      else 
        insert into "history" (ord_id, "action") values (new_name.id, city);	
     end if
  end  if
end
Я уже много разных вариантов поперепробывал, но как то все не получается, или не работает или работает не так :(
...
Рейтинг: 0 / 0
Помогите с написанем триггера
    #33056646
L0cat0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimyanПомогите пожалуйста разобратся с написанием триггера
select cities_list.id,cities_list.city_name as city
from orders
key join cars
join cities_list on cities_list.id = cars.city_id
where orders.id = new_name.id


Куда идет результат ? (в твоем случае строка)

Удачи !
...
Рейтинг: 0 / 0
Помогите с написанем триггера
    #33056727
Фотография Dimyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L0cat0r пишет:
> Куда идет результат ? (в твоем случае строка)

ну данные полученные из этого запроса нужны для анализа ситуации и
вставки данных в таблицу истории
Код: plaintext
1.
2.
3.
4.
5.
6.
if new_name.city_id = cities_list.id then
         insert into "history" (ord_id, "action") values (new_name.id, 
'Приехали');
       else
         insert into "history" (ord_id, "action") values (new_name.id, 
city);	
      end if
тут конечно вставляются упрощенные данные просто для примера, имя городо
в который едит груз или слово "Приехали"
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Помогите с написанем триггера
    #33056745
L0cat0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CREATE TRIGGER "order_history" after update order 1 on DBA.orders
referencing old as old_name new as new_name
for each row
begin
declare pid ... INTEGER ;
declare pCity char(...64);
... не знаю
if(new_name.car_send_id <> old_name.car_send_id) then
begin
select cities_list.id,cities_list.city_name into pId,pCity
from orders
key join cars
join cities_list on cities_list.id = cars.city_id
where orders.id = new_name.id

if new_name.city_id = pId then
insert into "history" (ord_id, "action") values (new_name.id, 'Приехали');
else
insert into "history" (ord_id, "action") values (new_name.id, pCity);
end if
end if
end
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Помогите с написанем триггера
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]