Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Триггер не распознает параметры из таблицы firebird 2.5 / 25 сообщений из 59, страница 1 из 3
04.11.2014, 19:43
    #38795528
Lessy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Привет всем Гуру форума,

помогите пожалуйста в написании тригерра.

С SQL, Firebird 2.5 работаю совсем недавно, поэтому нужна ваша помощь

Задача такая: даны две таблицы, если в первой происходит изменение одного значения,
то необходимо автоматически внести это действие во вторую таблицу со следующими столбцами: 1.статус, 2.дата и 3.время...итд
В триггере использую
.
.

if (new.adresse<> old.adresse (это значения для сравнения из таблицы_1) ) then

insert таблицa_2 (сам триггер относится к таблице_1) (здесь перечисляю параметры-> (status,date,time.... ))
values (здесь ввожу непосредственно сами значения, н-р: new.status , current_date, current_time. ..)

Проблема: как только вношу сами значения, то они не распознаются (new.status) ....
помогите найди ошибку или подскажите как правильно и грамотно это нужно делать.
Заранее спасибо.
...
Рейтинг: 0 / 0
04.11.2014, 20:11
    #38795561
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
LessyПроблема: как только вношу сами значения, то они не распознаются (new.status) ....

И что-же при этом так и говорит "они не распознаются"

ps/ текст триггера покажи
...
Рейтинг: 0 / 0
04.11.2014, 22:20
    #38795622
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
научиться работать с NULL-ами?
...
Рейтинг: 0 / 0
05.11.2014, 11:48
    #38795976
Lessy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
[/quot]
И что-же при этом так и говорит "они не распознаются"
[/quot]

Да, так и говорит!)))

AS
begin

if ((new.adresse<>old.adresse)) then

begin
insert into table2 (id,dev_id,date,time)
values (gen_id(id,1), new.dev_id,current_date,current_time);

end
end

Error:
Column does not belong to referenced table
Dynamic SQL Error.
SQL Errorcode=-206.
Column unknown.
NEW.DEV_ID.



Вот так выглядит Ошибка, подскажете, пожалуйста, как ее исправить.

Спасибо
...
Рейтинг: 0 / 0
05.11.2014, 11:51
    #38795981
Lessy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Ivan_Pisarevskyнаучиться работать с NULL-ами?

Спасибо, за подсказку!
можно ссылку, где я поподробнее о работе с NULL-aми могу почитать.
(Много в интернете информации, но все как-то поверхностно...)
...
Рейтинг: 0 / 0
05.11.2014, 11:58
    #38795995
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Lessy,

не верю, что ты не нашел
http://www.firebirdsql.org/manual/ru/nullguide-ru.html
А еще бы неплохо про null почитать Дейта. Ну или о том, что он пишет про Null, хотя бы здесь
http://citforum.ru/database/articles/nulls/
...
Рейтинг: 0 / 0
05.11.2014, 12:26
    #38796049
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
LessyAS
begin

if ((new.adresse<>old.adresse)) then

begin
insert into table2 (id,dev_id,date,time)
values (gen_id(id,1), new.dev_id,current_date,current_time);

end
end

Error:
Column does not belong to referenced table
Dynamic SQL Error.
SQL Errorcode=-206.
Column unknown.
NEW.DEV_ID.



Вот так выглядит Ошибка, подскажете, пожалуйста, как ее исправить.

В таблице (на которой "навешен" этот триггер) отсутствует поле DEV_ID
зы. new и old используются только для доступа к значениям полей таблицы на которую "навешен" триггер
...
Рейтинг: 0 / 0
05.11.2014, 12:40
    #38796090
Lessy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
kdv,

Спасибо за ссылки!!!
...
Рейтинг: 0 / 0
05.11.2014, 12:46
    #38796111
Lessy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
m7mВ таблице (на которой "навешен" этот триггер) отсутствует поле DEV_ID
зы. new и old используются только для доступа к значениям полей таблицы на которую "навешен" триггер

Ну теперь понятно!
не понятно как грамотно написать такой триггер, который "навешан" на одну таблицу, а использовать old. new. частично для другой

идей пока нет, так как и опыта тоже....

подскажите
...
Рейтинг: 0 / 0
05.11.2014, 12:51
    #38796123
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Lessy,

нафига?
...
Рейтинг: 0 / 0
05.11.2014, 13:03
    #38796134
Lessy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Симонов Денис
нафига?

ну как это, нафига, задача уже обозначена, надо реализовать!;-)
во вторую таблицу должны записываться с помощью триггера некоторые данные (время, число и тд), если в первой поменялось значение в одном столбце (как в данном случае, например, адрес).

Есть у кого нибудь идея?
...
Рейтинг: 0 / 0
05.11.2014, 13:20
    #38796158
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Lessy,

старые данные из другой таблички тебе зачем? Тем более что они ещё не менялись?
...
Рейтинг: 0 / 0
05.11.2014, 13:29
    #38796177
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Lessyво вторую таблицу должны записываться с помощью триггера некоторые данные (время, число и тд), если в первой поменялось значение в одном столбце (как в данном случае, например, адрес).

Есть у кого нибудь идея?
Идея только одна
Определить что это за " некоторые данные " и откуда они должны взяться
...
Рейтинг: 0 / 0
05.11.2014, 13:31
    #38796180
Lessy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Симонов ДенисLessy,

старые данные из другой таблички тебе зачем?

они и не нужны, нужны как раз только новые, еще раз мое задание, две таблицы,

если в первой происходит изменение одного значения

if (new.adresse<>old.adresse)

то необходимо автоматически внести это действие во вторую таблицу со следующими столбцами:

1.статус, 2.дата и 3.время...итд

then insert into (new.dev_id, bla bla)----

вот здесь во второй таблице уже и должны быть новые данные.

кароч, если пользователь поменял что либо в главной таблице,
я или другой пользователь заходим в таблицу_2 и видим, что и во сколько он это сделал (типо протокола)
...
Рейтинг: 0 / 0
05.11.2014, 13:32
    #38796186
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Lessy,
И в частности для твоего примера кто такой dev_id , и откуда должно взяться его значение
...
Рейтинг: 0 / 0
05.11.2014, 13:33
    #38796187
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Lessyспользовать old. new. частично для другойВ другой таблицы не может быть old new
Данные из другой таблицы можно вычитать селектом, изменить апдейтом и т.п.
...
Рейтинг: 0 / 0
05.11.2014, 13:33
    #38796191
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Lessy,

ddl таблиц выложи
...
Рейтинг: 0 / 0
05.11.2014, 13:35
    #38796197
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Lessy if (new.adresse<>old.adresse) не сработает, как ты ожидаешь, если один из операндов NULL
см. выше про NULL
...
Рейтинг: 0 / 0
05.11.2014, 13:40
    #38796203
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Lessy,

Lessyони и не нужны

Значит, тебе не нужен new.dev_id - убери его.

Lessyесли в первой происходит изменение одного значения
if (new.adresse<>old.adresse)

поэтому никаких других new.... и old... у тебя в триггере нет.


у тебя в триггере есть только три типа переменных
1) общесистемные - типа CURRENT_USER
2) те, которые ты сам заведешь в процедуре триггера
3) столбцы твоей первой таблицы ( adresse и может быть другие ) с двуми префиксами, Old и new

* dev_id не является обще-серверной переменной.
* dev_id не является локальной переменной процедуры
* dev_id - по твоим словам - не является столбцом таблицы твоего триггера.

Значит внутри триггера такой переменной не существует.

Какое значение тебе вставлять во вторую таблицу и откуда его брать - это ты решаешь сам, тут за тебя никто не угадает, что тебя надо и зачем и почему именно в этот столбец и именно это значение.
Никто кроме тебя, никто из нас на эти вопросы ответить не можем, мы про это ничего не знаем, только ты.
...
Рейтинг: 0 / 0
05.11.2014, 13:50
    #38796220
Lessy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Ivan_Pisarevsky,

это как раз работает без проблем, во-первых триггер навешан как раз на эту таблицу, во вторых адрес не может быть пуст NOT NULL,

не работает заполнение второй таблицы, но уже понятно почему, так как триггер не "навешан"

"некоторые данные" для m7m, я беру как раз из второй таблицы ( обновленные), то есть они перепысываются, а если они не обновились, то остаются старые, только меняется число изменений и дата
...
Рейтинг: 0 / 0
05.11.2014, 13:53
    #38796228
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Lessyадрес не может быть пуст NOT NULLDDL ты не приложил, нам угадывать?
...
Рейтинг: 0 / 0
05.11.2014, 13:55
    #38796235
Lessy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Ivan_PisarevskyВ другой таблицы не может быть old new

это уже понятно!

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

А вот с этого места поподробней, как раз это мне и надо, вычитать из другой таблицы проверить на обновление и вставить в таблицу _2
...
Рейтинг: 0 / 0
05.11.2014, 13:59
    #38796246
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Lessy, это лабораторная?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.11.2014, 14:08
    #38796276
Lessy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Arioch,

Большое спасибо за такой развернутый ответ, теперь все ясно, если не все то многое стало понятным!


Arioch
Значит, тебе не нужен new.dev_id - убери его.




это как раз мне нужно! это попытка считать новое значение из второй таблицы и туда же его и записать


AriochКакое значение тебе вставлять во вторую таблицу и откуда его брать - это ты решаешь сам, тут за тебя никто не угадает, что тебя надо и зачем и почему именно в этот столбец и именно это значение.
Никто кроме тебя, никто из нас на эти вопросы ответить не можем, мы про это ничего не знаем, только ты.

я прошу прощения, если мне толком не удалось объяснить задачу,

разные данные из второй таблицы и нужно снова записать во вторую, даже если они не обновились, а если обнповились, то как считать
...
Рейтинг: 0 / 0
05.11.2014, 14:10
    #38796281
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Триггер не распознает параметры из таблицы firebird 2.5
Lessy"некоторые данные" для m7m, я беру как раз из второй таблицы ( обновленные), то есть они перепысываются, а если они не обновились, то остаются старые, только меняется число изменений и дата
ну если можно как-то однозначно

беру как раз из второй таблицы ( обновленные)
кто есть вторая таблица ну и наверное первая таблица
Если вторая таблица это та о которой я подумал
то в примере нигде не видно что берешь из второй таблицы

это что означает
они перепысываются, а если они не обновились, то остаются старые, только меняется число изменений и дата
вставляется новая запись, изменяется существующая запись
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Триггер не распознает параметры из таблицы firebird 2.5 / 25 сообщений из 59, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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