Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 изменение нескольких таблиц одновременно  [new]
El_Ninio
Member

Откуда:
Сообщений: 52
Как изменить несколько таблиц через UPDATE.
Есть несколько таблиц, где в каждой таблице есть поле айди пользователя. Как поменять айди пользователей одновременно на всех таблицах, если поменять айди в основной таблице с пользователями.
12 окт 18, 10:36    [21702254]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1526
El_Ninio,

1. Изменения делаются В таблицах, а не НА таблицах.
2. Update изменяет одну и только одну таблицу.
3. Для внесения согласованных изменений В несколько таблиц придуманы транзакции.
12 окт 18, 10:56    [21702266]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Sergey Sizov,

Бесполезный лингвист в треде...


El_Ninio

все таблици имеют reference на таблицу пользователей(Id) и вы хотите сменить этот Id и потом у всех остальных?
12 окт 18, 11:07    [21702279]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20522
El_Ninio
Как поменять айди пользователей одновременно на всех таблицах, если поменять айди в основной таблице с пользователями.
ON UPDATE CASCADE не пробовали?
12 окт 18, 11:13    [21702289]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Akina
El_Ninio
Как поменять айди пользователей одновременно на всех таблицах, если поменять айди в основной таблице с пользователями.
ON UPDATE CASCADE не пробовали?

я как лютый противник каскадов, уточню: а FK дасть поменять ключ при этом?
12 окт 18, 11:17    [21702294]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
El_Ninio,

Если это у вас регулярно происходит, то Ваша база сконструирована неверно, если разово, используйте предложение output для update для получения пар старый ИД - новый ИД в ключевой таблице. Предварительно придется удалить внешние ключи в зависимых таблицах и затем восстановить после обновления данных.
12 окт 18, 11:38    [21702317]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
Владислав Колосов
Предварительно придется удалить внешние ключи в зависимых таблицах и затем восстановить после обновления данных.
Не проще ли вставить в родительскую таблицу запись с правильным ID, обновить значения в связанных таблицах на новое, после чего - удалить из родительской таблице запись со старым ID?
12 окт 18, 11:44    [21702325]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20522
TaPaK
FK дасть поменять ключ при этом?

fiddle.
12 окт 18, 11:46    [21702328]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
Щукина Анна
Владислав Колосов
Предварительно придется удалить внешние ключи в зависимых таблицах и затем восстановить после обновления данных.
Не проще ли вставить в родительскую таблицу запись с правильным ID, обновить значения в связанных таблицах на новое, после чего - удалить из родительской таблице запись со старым ID?

Хороший вопрос, но в какой-то момент времени может существовать две копии одного договора, например. Зависит от влияния на пользователя системы.
12 окт 18, 12:15    [21702360]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Akina
TaPaK
FK дасть поменять ключ при этом?

fiddle.

Ну тогда это самый простой вариант для ТС.
12 окт 18, 12:32    [21702372]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20522
TaPaK
тогда это самый простой вариант для ТС.
Я бы даже сказал "оно для того и придумано".
12 окт 18, 13:27    [21702451]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Akina
TaPaK
тогда это самый простой вариант для ТС.
Я бы даже сказал "оно для того и придумано".

ну меня всегда напрягают такие каскадные действия, особенно удаление :)
Но при этом если хотят менять ключи, значить завязали какую-то логику на само значение, что не правильно
12 окт 18, 13:57    [21702503]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
TaPaK
Akina
пропущено...
Я бы даже сказал "оно для того и придумано".

ну меня всегда напрягают такие каскадные действия, особенно удаление :)
Но при этом если хотят менять ключи, значить завязали какую-то логику на само значение, что не правильно
Если ключи не суррогатные, то это обычное дело.
12 окт 18, 14:07    [21702524]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
iap
TaPaK
пропущено...

ну меня всегда напрягают такие каскадные действия, особенно удаление :)
Но при этом если хотят менять ключи, значить завязали какую-то логику на само значение, что не правильно
Если ключи не суррогатные, то это обычное дело.

наверное
12 окт 18, 14:09    [21702526]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
iap,

практически, при удалении, если соединение типа "звезда" и звезда большая, да еще и 200+ активных пользователей, то каскадный механизм может привести к превышению времени обслуживания пользователей, чего не происходит при "ручном" удалении.
12 окт 18, 14:10    [21702531]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
El_Ninio
Member

Откуда:
Сообщений: 52
TaPaK, да
12 окт 18, 14:17    [21702537]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
El_Ninio
Member

Откуда:
Сообщений: 52
Akina, нет. Спс. Попробую.
12 окт 18, 14:18    [21702540]     Ответить | Цитировать Сообщить модератору
 Re: изменение нескольких таблиц одновременно  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20522
Владислав Колосов
практически, при удалении, если соединение типа "звезда"
Практически веселее всего влепить не подумавши ON DELETE CASCADE на selfjoin-таблицу. И превратить удаление одной записи в TRUNCATE...
12 окт 18, 14:47    [21702590]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить