| 
 | 
| 
 
Срабатывание триггеров в VFP 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Добрый день! Пытаюсь обновить одну базу VFP (.DBC) из другой. Поскольку пр-ние FoxPro знаю плохо, стал делать как привычнее - Delphi/ADO. И все бы ничего - но к некоторым таблицам привязаны триггеры, которые срабатывают при изменении записи. И вылетают ошибки типа "Trigger failed", "Row cannot be located for updating.." и пр. К тектам триггеров, как я понимаю, доступа нет - т.к. есть только база .DBC, есть .app Возникает вопрос - можно ли их как-то отключить? Если нет, то что делать? Ситуация странная - из самой бух.пр-мы изменить какой-нить налог - пжлста. А когда делаю это же программно, update-ом - получаю ошибку о "Trigger failed" ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.02.2003, 13:44 | 
  
  
  
   | 
||
| 
 
Срабатывание триггеров в VFP 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  > К тектам триггеров, как я понимаю, доступа нет - т.к. есть только база .DBC  Именно там и находится код триггеров. Правда исходный текст можно оттуда изъять, тогда нужен рефокс. > Возникает вопрос - можно ли их как-то отключить? DELETE TRIGGER ON TableName FOR DELETE | INSERT | UPDATE > Если нет, то что делать? Посмотреть, что там внутри Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. > вылетают ошибки типа "Trigger failed" Понятное дело, там небось ссылки на закрытые таблицы и несуществующие переменные. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.02.2003, 15:24 | 
  
  
  
   | 
||
| 
 
Срабатывание триггеров в VFP 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Delete trigger, как я понимаю вообще удаляет триггер, т.е. дропает его. Мне же нужно временно отключить его на время моего обновления. Этого, как я понял, нельзя. Modify сделать, не имея текста триггера, тоже невозможно - если только заменить его на новый. Удалить - и восстановить потом - я также не смогу, не имея исходного текста, так? А из .DBC его выдернуть напрямую (а потом вставить обратно) нельзя никак? .. ссылки на закрытые таблицы и несуществующие переменные А табл. и переменные эти в тексте самой пр-мы, так? Тогда получается что извне изменить таблицу просто невозможно, даже если обновл. данные корректны? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.02.2003, 15:41 | 
  
  
  
   | 
||
| 
 
Срабатывание триггеров в VFP 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Подожди.. Код: plaintext 1. 2. вкладка Table, там есть информация о триггерах? Возможно там вызвается какая-либо функция, которая зашита в app. Или Код: plaintext 1. 2. 3. 4. Ты можешь сохранить содержимое (COPY MEMO to xxx.txt), удалить триггер, выполнить свои действия, а затем восстановить мемо из файла (APPEND MEMO property FROM xxx.txt OVERWRITE as 0). ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.02.2003, 16:05 | 
  
  
  
   | 
||
| 
 
Срабатывание триггеров в VFP 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Там есть название триггерах, констрайнтах и пр. 2-ой вариант - с копированием в мемо - попробую обдумать, только в property не просто текст, там все в куче; довольно рискованно так отключать - сбойнет, а триггер уже не восстановишь. В общем куда ни кинь... ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.02.2003, 16:40 | 
  
  
  
   | 
||
| 
 
Срабатывание триггеров в VFP 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  > Там есть название триггерах, констрайнтах и пр.  Там должно быть выражение, возвращающее .t. для соотв. операции. Возможно, это имя функции (или хр. процедуры), о чем я уже говорил. > 2-ой вариант - с копированием в мемо - попробую обдумать, только в property не просто текст, там все в куче; довольно рискованно так отключать - сбойнет, а триггер уже не восстановишь. В общем куда ни кинь... Правильно, не только текст. А кто сказал что мемо это только текст? Расширение txt я от недалекой фантазии в примере привел. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.02.2003, 17:26 | 
  
  
  
   | 
||
| 
 
Срабатывание триггеров в VFP 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Для просмотра/редактирования текстов хранимых процедур и триггеров можно воспользоваться командой MODIFY PROCEDURE Код: plaintext 1. По названиям можно догадаться к какой таблице и на какое действие триггер. Ну и, как рекомендовал NNN,не удаляя кода возвратить .T., где нужно. Чего то типа ALTER TABLE ... DISABLE TRIGGER... как в TSQL нет ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.02.2003, 19:10 | 
  
  
  
   | 
||
| 
 
Срабатывание триггеров в VFP 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Небольшое дополнение Если пользоваться MODIFY PROCEDURE, то там в тексте должна быть одна важная строка Код: plaintext Код выше этой строки сгенерирован RI Builder-ом и может быть с помощью того же RI Builder-а перегенерирован. Код ниже - написан разработчиком, не виден для RI Builder-а и не изменяется при регенерации. При одинаковых именах триггеров в верхней и нижней части, написанный разработчиком код оверрайдит сгенерированный. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 28.02.2003, 08:45 | 
  
  
  
   | 
||
| 
 
Срабатывание триггеров в VFP 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  не факт, что триггер использует хр. процедуру. еще один способо добраться до текста триггера: Код: plaintext 1. 2. В файле дожно быть что-то вроде: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Смотри, что у тебя стоит после *UpdateTrigger . ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 28.02.2003, 09:08 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=41&msg=32112479&tid=1598391]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    14ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    60ms | 
get topic data:  | 
    11ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    45ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 233ms | 
| total: | 385ms | 

| 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...