Почему мой оператор обновления не работает в SQL Server Management Studio для моей Azure базы данных? - PullRequest
0 голосов
/ 06 февраля 2020

Я написал очень простой c оператор обновления, который раньше работал нормально, и теперь, по неизвестным причинам, больше не обновляет никакие данные, несмотря на то, что не возвращает никаких ошибок.

У меня есть две таблицы, NewCars и OldCars

Новые автомобили

CarId  INT      [NONE NULLABLE]
Make   VARCHAR  [NULLABLE]
Model  VARCHAR  [NULLABLE]
Design INT      [NULLABLE]
OldId  INT      [NONE NULLABLE]

Старые автомобили

CarId    INT     [NONE NULLABLE]
Make     VARCHAR [NULLABLE]
Model    VARCHAR [NULLABLE]
DesignId INT     [NULLABLE]

Мне нужно скопировать «Дизайн» от старого стола к новому. Вот запрос, который я написал, который работал с предыдущими столбцами в этой базе данных.

UPDATE NewCars
SET Design = (SELECT DesignId FROM OldCars WHERE OldCars.CarId = NewCars.OldId)

Когда я запускаю свое утверждение, оно завершается сообщением «x Количество затронутых строк» ​​x, являющееся общим количеством записей , Когда я проверяю данные, в столбце ничего нет. Я попробовал этот же подход на других столбцах, и он делает то же самое.

Я попытался перезапустить базу данных Azure, которая ничего не изменила. Затем я попытался выполнить запрос, чтобы проверить, возможно, еще выполнялся другой оператор запроса, и, похоже, там ничего нет. Я убедился, что типы данных источника и назначения одинаковы.

Кто-нибудь может мне помочь с тем, что здесь пошло не так?

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Я не уверен, что вы хотите использовать с этим обновлением sh, но это будет работать:

update NewCars
set Design = (select DesignId from OldCars  WHERE OldCars.CarId = NewCars.CarId);

В вашем заявлении на обновление у вас есть NewCar.OldId и NewCars таблица не имеет OldId колонка (из ваших спецификаций). А также это NewCars с s в конце. Поэтому, пожалуйста, проверьте утверждение и дайте нам тот, без ошибок и без обновлений ...

Если вы хотите обновить столбец NewCars.Design со значением из столбца OldCars.DesignId, где столбец NewCars.CarId соответствует столбцу OldCars.OldId тогда значение в столбце OldId может появляться не более одного раза. Иначе у вас будет ошибка.

0 голосов
/ 07 февраля 2020

Спасибо VBoka за помощь, оказалось, что были проблемы с корреляцией номеров Id, поскольку данные столбца были неверными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...