tengiz wrote:StrangerR wrote:drop from BalanceEntries where value = 0...
Да нет, дело не в этом, это скорее "у Вас ус отклеился"

. Нет такого синтаксиса в SQL. Должно быть "delete from....".
Ну delete конечно... Описаться можно ? Я же написал, я базу программирую не очень часто, в основном когда серьезные база кодеры на грабли наступают. И синтаксис наизусть не помню... Когда нужно, открываю книжку или предыдущий скрипт и пишу.. какие проблемы то.. Может, ктото еще попросит наизусть оракловый rman запомнить? К терапевту...
drop table но delete from xxx, все верно. Суть не меняется. Она в том, что если у меня есть табличка гигов так в 100, и нужно почистить например накопившиеся там записи с нулем в каком то поле, и эта чистка не атомарная (то есть если мы почистим 30% сегодня а 30 завтра то ничего страшного), то попытка сделать это одной командой приводит к катастрофе
- система воспринимает команду как одну транзакцию (ну а то туда кодеры и еще добавят)
- таблица блокируется на время оной транзакции, по крайней мере на запись (на чтение зависит от isolation level в MS SQL)
- все что там было переписывается в логи в redo записи (ну или в оракле в redo tablespace)
- база пыхтит часов 8 дописывая лог файл. Если он конячился то еще часов 6 делая откат. Все висят и матерятся...
Так не пишут. Пишут цикл, с ограничением записей в 1 транзакции и лучше с ограничением общего времени выполнения. И выполняют например 2 часа ночью. За неделю все чистится.
Почему те кто пишут SQL код этого не понимают, не знаю. Но факт, не понимают. Может, потому что они с жабы приходят??
Зато он всем скрипты переписывает! И учит, "как надо"
Я уже написал. Для того чтобы точно помнить синтаксис, есть книжки и примеры. Я и не помню. Но скрипты пишу постоянно, в том числе для обработки базы - совсем недавно пришлось переписыватЬ для MS SQL, и бэкапы оракла (строк 500 на rman) и прочее. А упомнить наизусть все тонкости синтаксиса shell / bash / perl / mysql / ms sql / oracla sqlplus / rman / еще в винде бывает bat как то пару тысяч строк пришлось на нем наваять / еще php попадался / и прочее... нафиг нафиг. Для синтаксиса есть reference manual. Ну и drop понятно что там delete, и что с того? Все работает, в том числе и переписанный скрипт и кластеры и зеркала и DR. И что интересно, без миллионных вложений в мейн фреймы. А с кластерами мы еще во времена Бэсмов работали.
нарезать большую операцию на серию маленьких часто может быть нетривиально, так как несмотря на то, что полная операция может быть неатомарной, маленькие в серии в иных случаях обязаны быть атомарными, причем не на произвольных границах, а на вполне определенных.
Это то понятно.
Студентов такому не учат.
Гмм. А чему их учат? Синтаксису команды
delete from table или
join в SQL-е? Или все таки может надо учить правильному кодированию а не тому какой там синтаксис? А то меня поражает число ляпов, которые приходят от девелоперов, особенно правда от китайских (например выборка кусочков данных методом пропуска N записей, выбора M, затем N += M, и по новой, при забытом напрочь ODER BY... блин, ловили эту чуду 2 месяца пока не поймали, автор при том так и остался неизвестным...)