|
Можно ли так сделать в запросе sql |
☑ |
0
1ctube
18.04.23
✎
09:28
|
Доброго времени суток. Вопрос по запросу на sql: есть БД. она содержит много таблиц, в каждой таблице произвольное количество полей. Необходимо найти значение допустим '74aa85c' и заменить его на '11aa79'. Оно может содержаться в любой таблице, в любом поле. Можно ли написать такой запрос, без указания конкретных таблиц и полей?
|
|
1
NorthWind
18.04.23
✎
09:33
|
Скуль в общем случае заточен на структурированные данные, а это подразумевает, что вы точно знаете, где, что и на что менять.
Если нет, то реляционная модель данных не годится, нужна какая-нибудь другая. И скуль тоже не годится.
|
|
2
Волшебник
18.04.23
✎
09:36
|
(0) Зачем?
|
|
3
NorthWind
18.04.23
✎
09:42
|
не, ну если очень надо, то сделать, конечно, можно. В любой БД есть способ получить метаданные о наименованиях таблиц и столбцов - например, из системных представлений, как в оракле том же. Соответственно пишете скрипт, который запускает необходимое количество SQL-я по всем требуемым таблицам и столбцам, и дело в шляпе.
|
|
4
Грю
19.04.23
✎
00:19
|
(0) Без процедур в запросе вряд ли получится. Одним запросом нужно вытащить названия таблиц, а другим запросом пробежаться по всем этим таблицам и обновить данные. Проблема в том, что название таблицы из результатов запроса нельзя подставить в другой запрос, без использования переменных. Поэтому только процедуры или вообще скрипт.
Еще, как вариант, отключить сервер SQL, и в файлах БД текстовым поиском заменить все нужные подстроки.
|
|
5
Garykom
19.04.23
✎
00:28
|
(0) В общем случае нельзя.
Простейший вариант это зная имена всех таблиц и что в каждой таблице есть ключевое поле id.
Можно упростить работу путем выгрузки каждой таблицы (или даже всех разом) в sql-текст аля insert ... from ...
Затем там сделать замену и изменив запрос на update ... where id=... выполнить его
|
|
6
Garykom
19.04.23
✎
00:29
|
(5) *аля insert ... to ...
|
|