Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Внизкак быстро очистить таблицу от данных Найти похожие ветки
← →
LAndreyV © (2004-02-27 15:35) [0]Типа EmptyTable, только через Query
← →
Anatoly Podgoretsky © (2004-02-27 15:38) [1]В Query вообще нет эквивалента этому, не для того SQL придумывали
← →
Курдль © (2004-02-27 15:39) [2]Запрос: delete имя_таблицы
← →
LAndreyV © (2004-02-27 15:40) [3]хреново :(
← →
Курдль © (2004-02-27 15:41) [4]Да какие проблемы? 8-()
Пишешь в Query указанный запрос, а потом делаешь ему ExecSql!
← →
menart © (2004-02-27 15:42) [5]ч/з SQL команды!
DELETE FROM НАЗВАНИЕ_ТАБЛИЦЫ
И твоя таблица очиститься, останится тольео структура!
а удалить вообще таблицу из базы данныхDROP TABLE НАЗВАНИЕ_ТАБЛИЦЫ
← →
menart © (2004-02-27 15:52) [6]конкретнее так
query1.sql.clear //очищаем запрос
query1.SQL.add("DELETE FROM НАЗВАНИЕ_ТАБЛИЦЫ"); //добавляем в запрос
query1.ExecSQL;//выполням!
// оп-па и чистая таблица :))
← →
LAndreyV © (2004-02-27 15:54) [7]если бы все было так просто!
ты сам-то так пробовал делать?
ОШИБОЧКУ высвечивает!
← →
Petr V. Abramov © (2004-02-27 16:01) [8]"DELETE FROM НАЗВАНИЕ_ТАБЛИЦЫ" пройдет и на DBase, и на FoxPro, и на Oracle. Ищите :)
Чтоб "быстро" - удалите все индексы.
← →
menart © (2004-02-27 16:11) [9]
> LAndreyV © (27.02.04 15:54) [7]
> если бы все было так просто!
>
> ты сам-то так пробовал делать?
>
> ОШИБОЧКУ высвечивает!
Где ошибку:0??? какую? укажи подробно? скоко лет долбил всегда все ОК! подробнее ошибку? мой текст использовал?
← →
Anatoly Podgoretsky © (2004-02-27 16:12) [10]Ты главное неверь этим сказкам из menart © (27.02.04 15:42) [5] , мне верить можешь. Это удаляет записи, а не очищает таблицу
Я тебе уже сказал никак
Но кто тебе мешает наряду с TQuery использовать и TTable специально только для этой цели?
← →
menart © (2004-02-27 16:16) [11]
> Anatoly Podgoretsky © (27.02.04 16:12) [10]
> Ты главное неверь этим сказкам из menart © (27.02.04 15:42)
> [5] , мне верить можешь. Это удаляет записи, а не очищает
> таблицу
я так понял что ему это и надо...
а очистить можно ч/з update!
← →
Курдль © (2004-02-27 16:16) [12]
> Но кто тебе мешает наряду с TQuery использовать и TTable
> специально только для этой цели?
Здравый смысл! Только человек стал на правильный путь работы с базами через запросы, как Вы его хотите вернуть в каменный век?
← →
menart © (2004-02-27 16:18) [13]LAndreyV А тебе что нужно что бы были пустые поля с тем же количеством записей? или что?
← →
menart © (2004-02-27 16:20) [14]
> Anatoly Podgoretsky © (27.02.04 16:12) [10]
куда мы катимся? а я вас считал за очень хорошего спеца...
← →
LAndreyV © (2004-02-27 16:27) [15]> Но кто тебе мешает наряду с TQuery использовать и TTable специально только для этой цели?
я так и сделал.
Спасибо всем.
Тема закрыта.
← →
Anatoly Podgoretsky © (2004-02-27 16:32) [16]Курдль © (27.02.04 16:16) [12]
Никто его от запросов не отговаривает, не передергивай карты вот точная цитата "TTable специально только для этой цели", TTable только для одной специальной операции, которую не возможно выполснить с помощью любых запросов.
Вместо этого ему подсовываются не рабочии решения с DELETE/UPDATE
Когда будет работать с клиент сервером и ему и это не поможет и не потребуется.
← →
Курдль © (2004-02-27 16:40) [17]
> TTable только для одной специальной операции, которую не
> возможно выполснить с помощью любых запросов.
Возможно я сильно отстал от жизни (лет 5 не работал с BDE), но я не могу себе представить, чего это можно сделать в TTable и нельзя в TQuery?
DELETE работает исправно (кстати, ключевое слово FROM - не обязательное для большинства БД)
UPDATE тоже работает... Хотя не пойму, причем здесь очистка таблицы?
← →
Johnmen © (2004-02-27 16:43) [18]>Курдль © (27.02.04 16:40) [17]
Похоже ты отстал на 5 лет не только от БДЕ, но и от большинства БД..
:)
← →
menart © (2004-02-27 16:46) [19]
> Anatoly Podgoretsky
А что вы понимаете под очисткой таблицы? Лучше начть с этого!
> TTable специально только для этой цели",
что увеличит сам exe на 50-60 кБайт! Хотя при современых компьютерах это ерунда. Представим себе такую ситуацию, что имеется БД с 30-50 таблицами! для каждой заводим свой ttableб и дизайн литит к чертовой бабушки, через полгода программа проктически не читаема и все сводикся к http://delphimaster.net/view/15-1077886579/
← →
Fay © (2004-02-27 16:46) [20]Johnmen © (27.02.04 16:43) [18]
В MSSQL2000 delete без from прокатило...
← →
menart © (2004-02-27 16:47) [21]извиняюсь не сам дизайн! а рабочая форма! хотя все.. мне кажется этой теме пора в потрепаться! :))
← →
menart © (2004-02-27 16:49) [22]
> DELETE работает исправно (кстати, ключевое слово FROM -
> не обязательное для большинства БД)
лучше учится писать правльно сразу, а то там прокатит а там нет! и будет неудобно привыкать к двум методам! Лучше к одному
← →
Johnmen © (2004-02-27 16:51) [23]>Fay © (27.02.04 16:46) [20]
Возможно. Но это не есть "большинства БД"
>menart ©
Успокойся. Не надо нервничать...:)
← →
Anatoly Podgoretsky © (2004-02-27 16:54) [24]menart © (27.02.04 16:46) [19]
> TTable специально только для этой цели",
что увеличит сам exe на 50-60 кБайт! Хотя при современых
Выбираем между возможностью и не возможностью
компьютерах это ерунда. Представим себе такую ситуацию, что имеется БД с 30-50 таблицами! для каждой заводим свой ttableб и дизайн литит к чертовой бабушки, через полгода программа проктически не читаема и все сводикся к
Достаточно одного на всю программу и одной функции для унификации работы, не требуется даже метод.
← →
Курдль © (2004-02-27 16:55) [25]> Johnmen ©
Ну-ка, навскидочку, поехали по базам:
оракл - "delete table_name"
сайбэйс - "delete table_name"
интербэйс, сволочь, требует "from"
а остальные и базами-то назвать стыдно :)
← →
Anatoly Podgoretsky © (2004-02-27 16:59) [26]Альтернативой, которая сможет выполнить тоже самое с помощью SQL это полное удаление и воссоздание таблиц. А вот это сожрет не 60 кб, про трудоемкость и возможные ошибки вообще молчу.
Мною предложен оптимальный вариант для его случая. При том это нужно только именно для его случая, для других баз и движков это или не требуется или не реализуемо.
Хакерские методы с копированием заголовка таблицы и последующей его корректировки, удалением исходной и переименованием временной не расматриваю вообще.
← →
menart © (2004-02-27 16:59) [27]Прошу всех в http://delphimaster.net/view/15-1077886579/
а то здесь начили забивать ветку и ушли от темы
← →
app © (2004-02-27 17:01) [28]menart © (27.02.04 16:59) [27]
От темы отхода нет, автор уже применил ему предложенное, нет и ни каких причин для перевод.
Есди есть желание сделать близкую ветку в той конференции то пожалуйста.
← →
menart © (2004-02-27 17:07) [29]
> Anatoly Podgoretsky © (27.02.04 16:59) [26]
А чем простая строчка с DELETE не подходит? И зачем все усложнять?
DELETE помоему делат тоже самое что и EmpetyTable? Или я не прав? Если не прав, то в чем?
← →
Курдль © (2004-02-27 17:12) [30]
> лучше учится писать правльно сразу, а то там прокатит а
> там нет! и будет неудобно привыкать к двум методам! Лучше
> к одному
К сожалению, это несбыточная мечта - "Один метод".
... outer join (ANSI)
A.ID =* B.ID (Sybase)
A.ID = B.ID(+) (Oracle)
Sybase заявил о возможности писать запросы и процедуры на Java.
Так что пока делаешь один проект под одну СУБД - привыкаешь к ее фишкам. Потом - все равно переучиваться...
← →
menart © (2004-02-27 17:15) [31]Ну привыкнуть хоть к основам... SQL давно уже пытаються подогнать к одному стандарту, хотя... ну их!
← →
Johnmen © (2004-02-28 02:41) [32]>Курдль © (27.02.04 16:55) [25]
Уехал недалеко... Да и стыд твой - твои личные проблемы...
:)
← →
Anatoly Podgoretsky © (2004-02-28 12:25) [33]menart © (27.02.04 17:07) [29]
Не прав
DELETE не очищает таблицу, а удаляет запись и полность эквивалентен методу Delete у TTable. Работает на уровне DML
EmptyTable же просто выкидывает все существующии записи (работает на уровне структуры таблицы, а не записей). Эквивалентом будет последовательность DROP TABLE + CREATE TABLE + CREATE INDEX, это уровень DDL
← →
menart © (2004-02-28 13:18) [34]
> Anatoly Podgoretsky © (28.02.04 12:25) [33]
Я может не совсем понял... Ну я сомниваюсь в твоих словах...
Delete у Table удаляет только текушую запись на которую указывает курсор! А SQL команда удаляет все строку у таблицы, если не указано условие!! EmpetyTable у BDE передает команду BDE анологичную запросу delete? не даром в остальных компанентах (ADO,IB,Express) нету этой команды!!! Так что спорить здесь бысмыслено, посмотри внимательно BDE API!
← →
Anatoly Podgoretsky © (2004-02-28 13:42) [35]menart © (28.02.04 13:18) [34]
Очень просто Delete для одной записи равносилен выражению ... Where ID = ###
Удалять надо в цикле
Твое представление об EmptyTable очень далеко от действительности, создается новая пустая таблица
Совет насчет BDE API переадресую обратно
Рекомендую также проверить тестами на достаточно большой таблице, последовательно применить DELETE FROM и EmptyTable наблюдая после каждого действия за размером таблицы. А еще можно включить показ удаленных записей в таблице и увидеть все своими глазами. Если не умеешь это делать программно, то воспользуйся СУБД под названием dBase/FoxPro
← →
Anatoly Podgoretsky © (2004-02-28 13:44) [36]Да и сама семантика
DELETE - удалить записи
EmptyTable - очистить таблицу
разве тебе ни о чем не говорит?
← →
menart © (2004-02-28 13:48) [37]
> Anatoly Podgoretsky © (28.02.04 13:42) [35]
Для этого есть команды в SQLPACK
http://delphimaster.net/view/15-1077886579/
← →
Anatoly Podgoretsky © (2004-02-28 13:51) [38]Ни какого отношение это к SQL не имеет, это команда специфического драйвера.
← →
menart © (2004-02-28 16:14) [39]Хорошо согласен, что это прокатит с файл-серверными решениями, а с клиент-серверными решениями как? ttable это не выход...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.042 c