Новая таблица неожиданно не имеет размера, включающего количество строк, отправляемых UPDATE / SET / FROM - PullRequest
0 голосов
/ 05 января 2020

Отказ от ответственности - очень начинающий SQL программист здесь; нет формального фона. Я думаю, что мне чего-то очень не хватает c - мне нужна помощь, чтобы выяснить, почему созданная мной таблица не имеет размера автоматически (длина строки), чтобы иметь возможность уместить все данные, которые я пытаюсь отправить с помощью команды UPDATE.

Фон - я создал новую базу данных "HelperTables" в SSMS (все настройки по умолчанию). Затем я создал новую таблицу с помощью мастера. Сценарий для таблицы выглядит следующим образом:

SET ANSI_NULLS ON 
GO

SET QUOTED_IDENTIFIER ON 
GO

CREATE TABLE [dbo].[CollectionStatus_RecipientGroup]
(
     [RecipientGroup] [VARCHAR](255) NULL,
     [CollectionStatus] [VARCHAR](255) NOT NULL,

     CONSTRAINT [PK_CollectionStatus_RecipientGroup] 
         PRIMARY KEY CLUSTERED ([CollectionStatus] ASC)
                     WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
                           IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
                           ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY]
GO

Я сейчас пытаюсь выполнить запрос UPDATE / SET / FROM, чтобы обновить эту таблицу с выбором.

Код выглядит следующим образом:

UPDATE [HelperTables].[dbo].[CollectionStatus_RecipientGroup]
SET [RecipientGroup] = tableupdate.RecipientGroup,
    [CollectionStatus] = tableupdate.CollectionStatus
FROM
    (SELECT *
     FROM
         (SELECT /* query trimmed for brevity - I confirmed it works perfectly by itself*/
         ) results
    ) tableupdate

На предыдущем SQL Сервере это работало отлично. Однако это приводило к (возвращению 0 строк) команды возврата (без ошибок), пока я не вошел в мастер редактирования Top XXX Rows и не добавил несколько фиктивных данных. Когда я перезапустил запрос, был получен результат (затронуто 4 строки), где 4 - число фиктивных строк данных, которые я добавил. Данные, отправляемые запросом, представляют первые четыре строки набора результатов.

Таким образом, я пришел к выводу, что мой код в порядке, но что-то не так с настройкой таблицы или какими-то внутренними настройками. в SSMS (возможно, разрешения?).

Чего мне не хватает?

1 Ответ

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

Спасибо за все отзывы, даже за язвительные биты. Подтвердив, что INSERT INTO решил проблему - я также добавил предложения DROP TABLE и CREATE TABLE к тому же запросу (очевидно, впереди). Вероятно, не самый эффективный способ сделать это, но, кажется, работает нормально. Если есть лучший способ, чем я хотел бы учиться!

...