Delete

maris10
Дата: 20.11.2007 21:56:00
Kак мне стереть записи в связаных таблицах?
Главная таблица ligumi
maris10
Дата: 20.11.2007 21:56:23
Гаджимурадов Рустам
Дата: 20.11.2007 22:07:01

maris10> Kак мне стереть записи в связаных таблицах?

Два способа - либо настраиваешь каскадное удаление (для внешних ключей) либо удаляешь вручную начиная с дочерних (подчиненных
таблиц) - в твоем случае начиная с pasutijums (удаление можно делать с клиента или в триггере/хп)


Posted via ActualForum NNTP Server 1.4

maris10
Дата: 20.11.2007 22:23:12
Мне би канибуть где по проше.
Carat
Дата: 20.11.2007 22:47:01
1. в связях таблиц укажи разрешить каскадное удаление (структура базы)
2. пишется хранимая процедура, которая идет по всей цепочке (логика базы)
3. пишется серия SQL-запросов, те же что и пункте 2 (логика программы)
Гаджимурадов Рустам
Дата: 20.11.2007 23:37:05

maris10> Мне би канибуть где по проше.

СУБД какая была? Access ?


Posted via ActualForum NNTP Server 1.4

maris10
Дата: 20.11.2007 23:43:25
да access.
Kotъ-Begemotъ
Дата: 20.11.2007 23:51:44
Удалять надо в рамках одной транзакции. То есть инициируешь транзакцию. и начинаешь удалять начиная с подчинённых таблиц:

DataBase.StartTransaction;

try
  qryDelDetail1.Close;
   // Содержимое qryDelDetail1:
   // Delete from Detail1 where KeyField = ValueKeyField
  qryDelDetail1.ExecSQL;

  qryDelDetail2.Close;
   // Содержимое qryDelDetail2:
   // Delete from Detail2 where KeyField = ValueKeyField
  qryDelDetail2.ExecSQL;
...

  qryDelMaster.Close;
   // Содержимое qryDelMaster:
   // Delete from Master where KeyField = ValueKeyField
  qryDelMaster.ExecSQL;

  DataBase.Commit;

 except
  DataBase.RollBack;
  MessageBox(Form1.Handle, 'Ошибка удаления!', 'Ошибка!', MB_OK or MB_ICONERROR or MB_APPLMODAL);

end;//try
Гаджимурадов Рустам
Дата: 21.11.2007 00:23:44

maris10> да access.

Access тоже поддерживает каскадное удаление записей.

Это и будет самый простой способ - будешь просто
удалять одну запись из главной таблицы и автоматом
удалятся ссылающиеся на нее записи из подчиненных таблиц.

Прочитай про каскадное удаление (cascade delete).


Posted via ActualForum NNTP Server 1.4

maris10
Дата: 21.11.2007 00:41:01
Спасиба:)