|
|
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Привет всем Гуру форума, помогите пожалуйста в написании тригерра. С 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) .... помогите найди ошибку или подскажите как правильно и грамотно это нужно делать. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 19:43 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
LessyПроблема: как только вношу сами значения, то они не распознаются (new.status) .... И что-же при этом так и говорит "они не распознаются" ps/ текст триггера покажи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 20:11 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
научиться работать с NULL-ами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 22:20 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
[/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. Вот так выглядит Ошибка, подскажете, пожалуйста, как ее исправить. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 11:48 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevskyнаучиться работать с NULL-ами? Спасибо, за подсказку! можно ссылку, где я поподробнее о работе с NULL-aми могу почитать. (Много в интернете информации, но все как-то поверхностно...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 11:51 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Lessy, не верю, что ты не нашел http://www.firebirdsql.org/manual/ru/nullguide-ru.html А еще бы неплохо про null почитать Дейта. Ну или о том, что он пишет про Null, хотя бы здесь http://citforum.ru/database/articles/nulls/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 11:58 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
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 используются только для доступа к значениям полей таблицы на которую "навешен" триггер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 12:26 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
kdv, Спасибо за ссылки!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 12:40 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
m7mВ таблице (на которой "навешен" этот триггер) отсутствует поле DEV_ID зы. new и old используются только для доступа к значениям полей таблицы на которую "навешен" триггер Ну теперь понятно! не понятно как грамотно написать такой триггер, который "навешан" на одну таблицу, а использовать old. new. частично для другой идей пока нет, так как и опыта тоже.... подскажите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 12:46 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Lessy, нафига? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 12:51 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Симонов Денис нафига? ну как это, нафига, задача уже обозначена, надо реализовать!;-) во вторую таблицу должны записываться с помощью триггера некоторые данные (время, число и тд), если в первой поменялось значение в одном столбце (как в данном случае, например, адрес). Есть у кого нибудь идея? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 13:03 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Lessy, старые данные из другой таблички тебе зачем? Тем более что они ещё не менялись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 13:20 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Lessyво вторую таблицу должны записываться с помощью триггера некоторые данные (время, число и тд), если в первой поменялось значение в одном столбце (как в данном случае, например, адрес). Есть у кого нибудь идея? Идея только одна Определить что это за " некоторые данные " и откуда они должны взяться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 13:29 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисLessy, старые данные из другой таблички тебе зачем? они и не нужны, нужны как раз только новые, еще раз мое задание, две таблицы, если в первой происходит изменение одного значения if (new.adresse<>old.adresse) то необходимо автоматически внести это действие во вторую таблицу со следующими столбцами: 1.статус, 2.дата и 3.время...итд then insert into (new.dev_id, bla bla)---- вот здесь во второй таблице уже и должны быть новые данные. кароч, если пользователь поменял что либо в главной таблице, я или другой пользователь заходим в таблицу_2 и видим, что и во сколько он это сделал (типо протокола) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 13:31 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Lessy, И в частности для твоего примера кто такой dev_id , и откуда должно взяться его значение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 13:32 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Lessyспользовать old. new. частично для другойВ другой таблицы не может быть old new Данные из другой таблицы можно вычитать селектом, изменить апдейтом и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 13:33 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Lessy, ddl таблиц выложи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 13:33 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Lessy if (new.adresse<>old.adresse) не сработает, как ты ожидаешь, если один из операндов NULL см. выше про NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 13:35 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
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 - по твоим словам - не является столбцом таблицы твоего триггера. Значит внутри триггера такой переменной не существует. Какое значение тебе вставлять во вторую таблицу и откуда его брать - это ты решаешь сам, тут за тебя никто не угадает, что тебя надо и зачем и почему именно в этот столбец и именно это значение. Никто кроме тебя, никто из нас на эти вопросы ответить не можем, мы про это ничего не знаем, только ты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 13:40 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevsky, это как раз работает без проблем, во-первых триггер навешан как раз на эту таблицу, во вторых адрес не может быть пуст NOT NULL, не работает заполнение второй таблицы, но уже понятно почему, так как триггер не "навешан" "некоторые данные" для m7m, я беру как раз из второй таблицы ( обновленные), то есть они перепысываются, а если они не обновились, то остаются старые, только меняется число изменений и дата ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 13:50 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Lessyадрес не может быть пуст NOT NULLDDL ты не приложил, нам угадывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 13:53 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Ivan_PisarevskyВ другой таблицы не может быть old new это уже понятно! Ivan_PisarevskyДанные из другой таблицы можно вычитать селектом, изменить апдейтом и т.п. А вот с этого места поподробней, как раз это мне и надо, вычитать из другой таблицы проверить на обновление и вставить в таблицу _2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 13:55 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Lessy, это лабораторная? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 13:59 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Arioch, Большое спасибо за такой развернутый ответ, теперь все ясно, если не все то многое стало понятным! Arioch Значит, тебе не нужен new.dev_id - убери его. это как раз мне нужно! это попытка считать новое значение из второй таблицы и туда же его и записать AriochКакое значение тебе вставлять во вторую таблицу и откуда его брать - это ты решаешь сам, тут за тебя никто не угадает, что тебя надо и зачем и почему именно в этот столбец и именно это значение. Никто кроме тебя, никто из нас на эти вопросы ответить не можем, мы про это ничего не знаем, только ты. я прошу прощения, если мне толком не удалось объяснить задачу, разные данные из второй таблицы и нужно снова записать во вторую, даже если они не обновились, а если обнповились, то как считать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 14:08 |
|
||
|
Триггер не распознает параметры из таблицы firebird 2.5
|
|||
|---|---|---|---|
|
#18+
Lessy"некоторые данные" для m7m, я беру как раз из второй таблицы ( обновленные), то есть они перепысываются, а если они не обновились, то остаются старые, только меняется число изменений и дата ну если можно как-то однозначно беру как раз из второй таблицы ( обновленные) кто есть вторая таблица ну и наверное первая таблица Если вторая таблица это та о которой я подумал то в примере нигде не видно что берешь из второй таблицы это что означает они перепысываются, а если они не обновились, то остаются старые, только меняется число изменений и дата вставляется новая запись, изменяется существующая запись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2014, 14:10 |
|
||
|
|

start [/forum/topic.php?fid=40&tid=1563218]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
154ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 273ms |
| total: | 541ms |

| 0 / 0 |
