SQL

UPDATE обновить все таблицы.. помогите с запросом??? (вн подробнее)

есть база servers в ней куча таблиц server1,server2,server3 ...
структура у всех одинаковая... так вот как обновить ячейку day во всех таблицах сразу????

UPDATE server1 SET day=day-1
может можно во множестве как то прописать
UPDATE server1,server2,server3... SET day=day-1
или по совпадению слова server
не получается найти инфу
Никак. UPDATE server1,server2,server3... -это еще нормально, начиная с 4ой какой-то версии показывает, что обновление таблицы будет на основе значений других таблиц. А вот day=day-1 - уже не получится, надо указать один конкретный столбец, а здесь day есть и в s1, и в s2. А вот так можно: update s1,s2 set s1.n=s1.n-1, s2.n=s2.n-1
Beyukaqa Cahangiroqlu
Beyukaqa Cahangiroqlu
27 070
Лучший ответ
жесткий хардкор :
srver - export - sql
ctrl + H
server - import
MJ
Mzee Joto
59 848
курсором можно сделать, в него закачиваешь список серверов с базаданных, список нужных таблиц на серверах, данные которые нужно обновить, а дальше строишь запрос на обновление нужных данных, но есть нюанс, если данных очерь много, то это займет немало времени, т. к курсор выполняется построчно и чем больше объем данных, тем он медленней будет, но зато курсор эффективен в подобных операциях или для алгоритмов сложной логики :)
но если сервера связанны и имеют одинаковую схему базы, то можно обновить на одном и остальные уже с помощью репликации, а так, альтернативы курсору нет :)
Afg Jan
Afg Jan
35 569
Sergio Nanobashvili Отвечая на вопросы на мейле, надо делать лицо попроще.
Сон разума рождает чудовищ, как говорят испанцы.
Не обладая вообще никакими знаниями, ты мало того что берешься что-то делать, но еще и огрызаешься на тех, кто тебя наставляет на путь истинный.

У тебя просто адовая стркутура БД.
В нормально организованной базе такой запрос вообще будет не нужен.

Во-первых, таблица должна быть ОДНА.
Во-вторых, никаких запросов вида SET day=day-1.
В базу достаточно записать что-то один раз, а потом она сама все тебе посчитает при выборке.
В базу надо писать ДАТУ. А не дурацкую цыферку day.
И потом выбирать только РАЗНИЦУ:
SELECT to_days(now())-to_days(date_set) as day

Но ты можешь продолжать считать всех вокруг дураками (и при этом приставать к ним, чтобы починили тебе твой велосипед на треугольных колесах)