Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Foxpro/Clipper/Dbase > Удаление записей


Автор: CHEZHoK 20.5.2006, 11:10
Добрый день.У меня есть 3 таблицы.
Table1 индексирую по id (это автоикрементируемое поле).Индекс типа primary.
Table2 аналогично.Индекс типа regular.
Table3 аналогично.Индекс типа regular.
И связываю их.
Я хочу удалить те записи в таблица,которые соответствую такому критерию:
Код
Delete from table1 where surname=thisform.text1.text
 
Но удаляются записи только из первой таблицы,а мне надо и из Table2,Table3 (там поля surname нет).

Спасибо.

P.S.использую Visual FoxPro. И связь типа 1:1 

Автор: LSD 20.5.2006, 12:38
В Visual FoxPro у foreign key, можно установить on delete cascade? 

Автор: CHEZHoK 20.5.2006, 13:03
Что-то я не нашёл у ключей такого свойства.А попдробнее не скажите где найти? 

Автор: CHEZHoK 20.5.2006, 14:09
Нашел я on delete cascade,но в parent таблице удаляется запись,а в 2-х child'aх эти записи только выделяются
курсором (т.е. слева от них при просмотре browse появляются черные прямоугольники) 

Автор: CHEZHoK 20.5.2006, 19:19
У меня,конечно,ещё есть одна идея:
создаем новую таблицу (free table) с единственным полем id,в котором хранятся те номера,которые нужно удалить их этих таблиц.
Все получается и в таблицу заносятся необходимые номера.
Далее выполняю запрос:
Код

  SELECT id FROM table2 where table2.u_zvan=thisform.text1.Text INTO TABLE ind_to_del
  USE ind_to_del
  DELETE FROM table1 WHERE table1.id=ind_to_del.id
  pack
  DELETE FROM table2 WHERE table2.id=ind_to_del.id
  pack
  DELETE FROM table3 WHERE table3.id=ind_to_del.id
  PACK
  DELETE FROM table4 WHERE table4.id=ind_to_del.id
  PACK

Но:
1)Выделяется только 1 запись.
2)Она не удаляется,а появляется черный квадратик в левом стороне при просмотре таблиц с помощью browse. 

Автор: MFoxer 21.5.2006, 11:17
Для начала нужно выдать:
SET DELETED ON
И если таблицы входят в БД,  а не являются FREE, то просто повесить тригеры на удаление. Только тригеры доступны если таблицы  присоедены к БД.
А все остальное верно, удалять по ID. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)