Как очистить базу данных, оставив только структуру?

Материал из DRKB

Как очистить базу данных, оставив только структуру?[править | править код]

ЗАМЕЧАНИЕ: Этот пример не работает в режиме редактирования, так как таблица должна быть открыта в эксклюзивном режиме.

procedure TForm1.Button2Click(Sender: TObject);
begin
  { Opens the table in exclusive mode }
  try
    with Table1 do
    begin
      Active := False;
      Exclusive := True;
      Active := True;
      try
        EmptyTable;
      except
        ShowMessage('Cannot empty database');
      end;
    end
  except
    ShowMessage('cannot open table in exclusive mode');
  end
end;


Примечание Vit: если требуется очистить таблицу не прибегая к эксклюзивному доступу или используя другие способы доступа помимо BDE то рекомендуется выполнить запрос:

DELETE FROM MyTable

Которая полностью очистит таблицу. Для MS SQL Server существует и другой способ - выполнение запроса:

TRUNCATE TABLE MyTable

Различие между DELETE и TRUNCATE заключается в том, что для операции DELETE создаётся запись в Transaction log, что обеспечивает более высокую надёжность, но при больших таблицах выполнение DELETE может быть весьма долгим. Напротив, TRUNCATE в Transaction log не попадает и таблица любых размеров необратимо очищается практически мгновенно вне зависимости от её размера. DELETE - стандартная операция SQL и поддерживается всеми базами данных, напротив, TRUNCATE - операция не стандартная, поэтому поддерживается лишь отдельными базами данных.


Source: Взято из http://forum.sources.ru
ID: 02545