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

Откуда:
Сообщений: 8
Помогите новичку разобраться в следующем: при создании таблиц я указала внешние ключи, но без записи ON UPDATE CASCADE. Мне нужно сейчас обновить некоторые записи сразу в нескольких связанных таблицах. Как это можно сделать не прибегая к пересозданию таблиц заново.
8 дек 14, 00:13    [16964154]     Ответить | Цитировать Сообщить модератору
 Re: Обновление связанных таблиц  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Lar4ik,

если есть связь то ключевое поле в главной таблице вы не сможете проапдейтить
не надо пересоздавать таблицы. надо убить только связь
потом проапдейтить обе таблицы и восстановить связь
или сразу восстановить связь с ON UPDATE CASCADE
хотя я такой конструкцией не пользуюсь и ключи руками почти никогда не правлю
8 дек 14, 02:08    [16964336]     Ответить | Цитировать Сообщить модератору
 Re: Обновление связанных таблиц  [new]
Glory
Member

Откуда:
Сообщений: 104751
Lar4ik
Как это можно сделать не прибегая к пересозданию таблиц заново.

Написать несколько команд UPDATE ?
8 дек 14, 09:35    [16964583]     Ответить | Цитировать Сообщить модератору
 Re: Обновление связанных таблиц  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Glory
Lar4ik
Как это можно сделать не прибегая к пересозданию таблиц заново.

Написать несколько команд UPDATE ?
C промежуточным UPDATEом ссылки на NULL
8 дек 14, 09:51    [16964646]     Ответить | Цитировать Сообщить модератору
 Re: Обновление связанных таблиц  [new]
Glory
Member

Откуда:
Сообщений: 104751
iap
Glory
пропущено...

Написать несколько команд UPDATE ?
C промежуточным UPDATEом ссылки на NULL

Можно и просто в цикле, по одной родительской записи за раз.
8 дек 14, 09:59    [16964676]     Ответить | Цитировать Сообщить модератору
 Re: Обновление связанных таблиц  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Glory
iap
пропущено...
C промежуточным UPDATEом ссылки на NULL

Можно и просто в цикле, по одной родительской записи за раз.
Но тогда будет нарушаться ссылочная целостность.
Ведь надо изменить значения в двух таблицах,
но одновременно это невозможно.
8 дек 14, 10:09    [16964697]     Ответить | Цитировать Сообщить модератору
 Re: Обновление связанных таблиц  [new]
Glory
Member

Откуда:
Сообщений: 104751
iap
Но тогда будет нарушаться ссылочная целостность.

да, не учел
8 дек 14, 10:11    [16964710]     Ответить | Цитировать Сообщить модератору
 Re: Обновление связанных таблиц  [new]
Lar4ik
Member

Откуда:
Сообщений: 8
leov,
если есть связь то ключевое поле в главной таблице вы не сможете проапдейтить
не надо пересоздавать таблицы. надо убить только связь
потом проапдейтить обе таблицы и восстановить связь

а разве связь не для того и нужна чтобы если мы меняем что-то в одной таблице, произошли изменения и в другой?
8 дек 14, 14:04    [16966137]     Ответить | Цитировать Сообщить модератору
 Re: Обновление связанных таблиц  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
Lar4ik
leov,
если есть связь то ключевое поле в главной таблице вы не сможете проапдейтить
не надо пересоздавать таблицы. надо убить только связь
потом проапдейтить обе таблицы и восстановить связь

а разве связь не для того и нужна чтобы если мы меняем что-то в одной таблице, произошли изменения и в другой?


нет
8 дек 14, 14:04    [16966142]     Ответить | Цитировать Сообщить модератору
 Re: Обновление связанных таблиц  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Lar4ik
leov,
если есть связь то ключевое поле в главной таблице вы не сможете проапдейтить
не надо пересоздавать таблицы. надо убить только связь
потом проапдейтить обе таблицы и восстановить связь

а разве связь не для того и нужна чтобы если мы меняем что-то в одной таблице, произошли изменения и в другой?
... или не произошли ни в одной!
8 дек 14, 14:15    [16966232]     Ответить | Цитировать Сообщить модератору
 Re: Обновление связанных таблиц  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Lar4ik
leov,
если есть связь то ключевое поле в главной таблице вы не сможете проапдейтить
не надо пересоздавать таблицы. надо убить только связь
потом проапдейтить обе таблицы и восстановить связь

а разве связь не для того и нужна чтобы если мы меняем что-то в одной таблице, произошли изменения и в другой?
тут правильно ответили что таки нет
т.е можно сделать и так, но это тут называют плохой практикой или говнокод
связи делают для того чтобы были связи (масло масленное, но это так)
позанимайтесь с sql подольше и поймете
такие извращенные вещи какие появляются у вас в голове быстро выветрятся

я вот delete cascad чуток применял чтобы ветки наследников рубить целиком
а вот об update cascad ни разу даже не думал и полез в тему посмотреть что за зверь такой
8 дек 14, 14:40    [16966461]     Ответить | Цитировать Сообщить модератору
 Re: Обновление связанных таблиц  [new]
Glory
Member

Откуда:
Сообщений: 104751
leov
связи делают для того чтобы были связи (масло масленное, но это так)

Ссылочные ограничения, как их правильно называют, всего лишь одни из многих ограничений целостности, которые создают для обеспечения целостности данных на стороне сервера.
Поэтому не надо пытаться давать свои определения тому, чего вы не знаете.
8 дек 14, 14:48    [16966527]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить