Многоэлементный идентификатор «Customer.Name» не может быть привязан к очень простому сценарию - PullRequest
0 голосов
/ 16 марта 2012

У меня есть 2 таблицы, Customer и CustomerBreakdown.Существует связь между внешним ключом между CustomerBreakdown и Customer через CustomerBreakdown.CustomerId, указывающая на столбец Id в Customer.

Мне нужно было удалить и воссоздать CustomerBreakdown и снова заполнить его некоторыми сценариями.

После этого мне нужно восстановить связь внешнего ключа между двумя таблицами.

Для этого я выполняю следующие шаги:

  1. Создайте 2 новые таблицы CustomerBackup и CustomerBreakdownBackup и заполните их значениями исходных таблиц, запустив следующие два сценария:

    select * into CustomerBackup из Customer

    select *в CustomerBreakdownBackup из CustomerBreakdown

  2. Усечение CustomerBreakdown.

  3. Запустите сценарии для заполнения CustomerBreakdown.
  4. Запустите следующий сценарий длявосстановите связь внешнего ключа между двумя таблицами.

Вот мой код:

update CustomerBreakdown 
set CustomerId =  Customer.Id
from  
    Customer,
    CustomerBreakdown,
    CustomerBackup,
    CustomerBreakdownBackup
where 
    CustomerBreakdownBackup.CustomerId = CustomerBackup.Id
and Customer.Name = CustomerBackup.Name
and CustomerBreakdown.CustomerLongName = CustomerBreakdownBackup.CustomerLongName

, но скрипт генерирует следующую ошибку:

Не удалось связать многоэлементный идентификатор «Customer.Name».

Почему?И как мне это исправить?Спасибо!

Структура таблиц:

Заказчик :

  • Id: первичный ключ
  • Name: строка с ограничением уникальности

CustomerBreakdown :

  • Id: первичный ключ
  • CustomerId: внешний ключ к полю Id в таблице Customer
  • CustomerLongName: строка с ограничением уникальности

1 Ответ

0 голосов
/ 18 апреля 2012

Зачем тебе это делать ??? Я думаю, что это намного проще

  1. Создание резервных таблиц для Customer и CustomerBreakdown.
  2. Отбросить связь между двумя оригинальными таблицами.
  3. Перезаполнение CustomerBreakDown
  4. Убедитесь, что CustomerBreakdown содержит идентификатор клиента, который доступен в главной таблице
  5. Создайте отношение снова
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...