Отключить триггер fox pro table из c# (. NET) - PullRequest
0 голосов
/ 26 мая 2020

Мне нужно добавить строку в таблицу fox pro, и перед вставкой строки мне нужно отключить триггер, примененный к таблице fox pro, и снова включить его после вставки строки.

Есть ли способ чтобы отключить триггер fox pro из c#. NET?

Спасибо за любые подсказки по этому поводу.

1 Ответ

1 голос
/ 26 мая 2020

К сожалению, нет прямого способа сделать это, даже используя ExecScript. Используя ExecScript, вы можете запустить код delete trigger, и он вернет true без каких-либо ошибок, как если бы он это сделал. Но он не удаляет триггер и не возвращает информацию о том, что триггер еще не поврежден. К сожалению, вы даже не можете использовать ExecScript для обхода кода, который в противном случае не поддерживается VFPOLEDB.

Единственный способ сделать это - создать копию db c (используя VFP modify database - или C# низкий уровень, если вы достаточно смелы) и в этой копии имейте такое же определение таблицы без триггера.

Например:

  • Сделайте копию вашего существующего .db c (.dct и .dcx)

  • Измените таблицу, чтобы удалить триггер (или сделайте это в коде :)

    Delete Trigger On ('yourTableName') For Insert
    
  • Сохраните этот .db c, .dct и .dcx под другим именем.
  • Восстановить существующие .db c, .dct, .dcx.
  • Когда вам это нужно, вы можете заменить файлы .db c, .dct, .dcx, а затем вернуть обратно, когда закончите.

Это громоздко, но лучше, чем ничего.

Возможно, вы захотите вместо этого иметь исполняемый файл VFP, который вы можете вызывать с параметрами и который выполняет вставку за вас.

...