27.12.2006, 19:53 | #1 |
Участник
|
Почему не реботают тригеры OnInsert, OnModify когда програмно вставляется/модифицируется запись? И можно ли заставить из сработать? Есть ли аналог функции Validate, только для всей записи, а не для конкретного поля?
|
|
27.12.2006, 20:13 | #2 |
Участник
|
Всё рабоатет
Код: Item.Description:='New '+Item.Description; //Тригер не сработает(лучше так не писать) Item.VALIDATE(Item.Description,'New '+Item.Description); Item.INSERT; Item.INSERT(TRUE); Item.MODIFY; Item.MODIFY(TRUE); Item.MODIFY(FALSE); Item.DELETE(FALSE); Item.DELETE(TRUE); |
|
28.12.2006, 13:04 | #3 |
Участник
|
2Автор : Триггера Validate для всей записи в навижене нет. Если вы на минуту задумаетесь как должен был бы отрабатывать данный триггер, то поймете, что он внес бы лишь сумятицу в работу.
|
|
28.12.2006, 13:26 | #4 |
Участник
|
2romeo: Про тригер OnValidate для записи никакой речи не идёт. Если прочитать вопрос, то там присутствует слово "функция", а не тригер. Но уж если на то пошло, аналогом Validate для записи можно было бы сделать например функцию Validate, которая бы вызывала тригеры OnValidate для всех полей в записи.
Storkich дал правильный ответ на может быть не совсем правильно сформулированный вопрос. Спасибо ему за это. P.S. понимаю, надо внимательнее читать документацию. |
|
28.12.2006, 13:50 | #5 |
Участник
|
Цитата:
Сделать можно, только нафиг она нужна будет. Слабоиспользуемая и маловключеннаявдело та таблица, где зовутся все время одни и те же валидейты -)) По опыту знаю, что в одном случае надо валидейтить, а в другом, к несчастию, присваивать. Селяви. -)) |
|
28.12.2006, 13:58 | #6 |
Участник
|
Понимаю, что можно и без такой функции обойтись. Вопрос вообще не про Validate был, так что закрываем топик и не будет тут разводить дискуссии ни о чём.
|
|
28.12.2006, 15:11 | #7 |
Участник
|
Не забывай про временные таблицы, там лучше тригеры не вызывать.
И поосторожней с DELETEALL можно потерять целостность, и засорить базу. DELETEALL(TRUE); |
|
28.12.2006, 16:27 | #8 |
Участник
|
Цитата:
Таблица.SetНеУдалять(TRUE); Таблица.DELETEALL(TRUE); ты будешь удивлен, увидев, что удалилось ВСЁ. Так что осторожнее. То же касается и MODIFYALL. |
|
28.12.2006, 17:50 | #9 |
Участник
|
|
|
29.12.2006, 06:57 | #10 |
Участник
|
|
|
29.12.2006, 11:13 | #11 |
Участник
|
Цитата:
Ладно, отвечает доктор филологических наук, Ромео. Да, безусловно валидейт является триггером в понятиях Нави. Написав "и валидейты тоже" я лишь хотел подчеркнуть, что топ был создан для обсуждения таких триггеров как OnInsert, OnModify. Затем обсуждение сползло и на триггер OnDelete таблиц. Далее мне было строгим тоном указано автором, что беседа и вовсе вываливается на обсуждение OnValidate ... Я осознал свою вину и написал фразу "и валидейты тоже" потому, что собственно OnValidate уже не воспринимался как триггер в контексте обсуждения. Этой фразой я ввернул его на место. С уважением. |
|
29.12.2006, 12:20 | #12 |
NavAx
|
Отличный план, доктор!
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|