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

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

The UPDATE statement conflicted with the FOREIGN KEY constraint

что в принципе логично,

Каким самый простым способом я могу изменить ID, в этих двух таблицах, не отключай контроль по ключам ?

для примера код который у меня сейчас.

update [1journal_t] set iddoc1='8e6e4b59-b560-11e1-a6a7-003048ff1647' where iddoc1='d2ca3783-b560-11e1-a6a7-003048ff1647'

update [1journal_h] set iddoc1='8e6e4b59-b560-11e1-a6a7-003048ff1647' where iddoc1='d2ca3783-b560-11e1-a6a7-003048ff1647'
15 июн 12, 10:55    [12717866]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить клчю в таблицах  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Удалить запись из второй, апдейт в первой, вставка во вторую.
15 июн 12, 11:02    [12717947]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить клчю в таблицах  [new]
yhvvh
Member

Откуда:
Сообщений: 11
а как сделать вставку удаленной записи?
15 июн 12, 11:05    [12717987]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить клчю в таблицах  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Можно, конечно, ещё сделать FOREIGN KEY каскадным...
В смысле - пересоздать
Только не бейте меня ногами!


Но не понятен, однако, смысл изменения ID в таблице.
По-моему, его нет.
15 июн 12, 11:14    [12718069]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить клчю в таблицах  [new]
.Anatoly.
Member

Откуда: Екатеринбург
Сообщений: 310
iap
Можно, конечно, ещё сделать FOREIGN KEY каскадным...
В смысле - пересоздать
Только не бейте меня ногами!


Можете объяснить, почему вы это считаете плохой практикой?
15 июн 12, 16:43    [12721726]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить клчю в таблицах  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
.Anatoly.
Можете объяснить, почему вы это считаете плохой практикой?
Каскады - зло, причем зло слабоуправляемое. Обновление ключа - зло, которое говорит о том, что, скорее всего, кто-то где-то что-то не так наархитектурил.
15 июн 12, 16:50    [12721781]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить клчю в таблицах  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31956
yhvvh
Каким самый простым способом я могу изменить ID, в этих двух таблицах, не отключай контроль по ключам ?
Самый простой и идеологически правильный способ - вставить в первую таблицу записи с новыми ключами, а потом изменить ссылки во второй таблице со старых на новые.

После этого удалить старые записи в первой таблице, а ещё лучьше не удалять, а отметить как устаревшие.
15 июн 12, 17:34    [12722202]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить клчю в таблицах  [new]
yhvvh
Member

Откуда:
Сообщений: 11
спасибо всем
19 июн 12, 10:05    [12736092]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить