Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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]

Для этого есть команды в SQL PACK
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
1-1078836392
hexone
2004-03-09 15:46
2004.03.28
Функция Move из system.pas


3-1076403255
SM
2004-02-10 11:54
2004.03.28
Как узнать значение автоинкрементарного поля после SQL


6-1074174956
Method
2004-01-15 16:55
2004.03.28
Chat


4-1074166573
S@shka
2004-01-15 14:36
2004.03.28
Можно ли отправить сообщение из/в консоль


3-1077714830
adias
2004-02-25 16:13
2004.03.28
Целостность и транзакция





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский