Создание запроса на вставку (ошибка ограничения внешнего ключа) - PullRequest
3 голосов
/ 29 апреля 2010

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

Мой запрос:

  SET IDENTITY_INSERT City ON

  INSERT INTO City ([cityid],[city],[country],[state],[cityinfo]
  ,[enabled],[countryid],[citycode],[stateid],[latitude],[longitude])
  SELECT [cityid],[city],[country],[state],[cityinfo]
  ,[enabled],[countryid],[citycode],[stateid],[latitude],[longitude]
  FROM TD.DBo.City

получаю эту ошибку:

The INSERT statement conflicted with the FOREIGN KEY constraint "FK__city__countryid__3E52440B". The conflict occurred in database "schoolHigher", table "dbo.country", column 'countryId'.

1 Ответ

3 голосов
/ 29 апреля 2010

INNER JOIN таблица другой базы данных с таблицей country. Только те записи с существующей страной будут выбраны.

Примечание: вы должны убедиться, что соответствующие страны в обеих базах данных совпадают.

SET IDENTITY_INSERT City ON

INSERT INTO City (
    [cityid]
    ,[city]
    ,[country]
    ,[state]
    ,[cityinfo]
    ,[enabled]
    ,[countryid]
    ,[citycode]
    ,[stateid]
    ,[latitude]
    ,[longitude])
SELECT  ct.[cityid]
        ,ct.[city]
        ,ct.[country]
        ,ct.[state]
        ,ct.[cityinfo]
        ,ct.[enabled]
        ,ct.[countryid]
        ,ct.[citycode]
        ,ct.[stateid]
        ,ct.[latitude]
        ,ct.[longitude]
FROM  TD.DBo.City ct
      INNER JOIN dbo.Country cnt ON cnt.CountryID = ct.CountryID
...