Как сделать 2 ссылочных идентификатора одним идентификатором на сервере SQL? - PullRequest
0 голосов
/ 26 мая 2020

У меня есть таблица измерений с именем Client_Dim

ID|client number|name          |address        |city
4 |5555         |Mike Herald   |6 Han Street   |Boston
9 |5555         |Mike Herald   |11 Main Street |Boston

Мне нужно изменить Client_Dim ID номер 9 на Client_Dim ID номер 4, потому что это один и тот же человек. Я использую Client_Dim ID номер 4 как ссылку на другую таблицу.

Мне нужен такой вывод:

ID|client number|name         |address         |city
4 |5555         |Mike Herald  |11 Main Street  |Boston

Как я могу выполнить sh это?

(Это мой текущий код, который не работает)

update Client_Dim
set address = '11 Main Street'
where client number = 5555

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Я не знаю DDL вашей таблицы, но похоже, что у вас есть индекс в столбце идентификатора, возможно, это автоинкремент, и на него есть ссылка в другой таблице.

Обычно этот тип задач выполняется с использованием SQL -Pro c, который принимает во внимание некоторые аспекты SQL путем извлечения данных из метамодели, чтобы определить, например, каскадно ли FK при удалении, и вести себя соответствующим образом.

Но это похоже, что вы работаете с некоторыми данными прототипа и просто хотите быстро это исправить. В вашем запросе в этом случае отсутствует пара квадратных скобок, и он должен быть правильным.

UPDATE Client_Dim
SET address = '11 Main Street'
WHERE [client number] = 5555
0 голосов
/ 26 мая 2020

Это не так просто. Вам потребуются следующие шаги:

  1. Вы должны найти правильный лог c, который определяет, какая строка должна храниться в таблице Client_Dim (которая работает во всех случаях). Например:
    • Всегда сохранять данные строки с самым большим идентификатором для самого низкого идентификатора внутри группы «customer_code»
    • Или сохраняйте данные строки той строки, которая имеет наименьшие отличия от строки с наименьший ID
    • et c.
  2. Вам необходимо обновить все внешние ключи во всех ссылочных таблицах в Client_Dim_ID с 9 до 4
  3. Затем вы можете обновить строку с ID = 4 на новый адрес в Client_Dim
  4. Удалить строку с ID = 9 из таблицы Client_Dim
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...