Повторите оператор вставки без GO <x> - PullRequest
0 голосов
/ 21 апреля 2020

Есть ли "более приятный" способ добиться тех же результатов, что и этот запрос SQL:

INSERT INTO [MyDB]..[MyTable] VALUES
(NULL,NULL,NULL,NULL)
GO 300

, который заключается в вставке 300 по умолчанию всех NULL (кроме столбца PK Id) новых строк в пустую Таблица? Кажется, это займет некоторое время!

Кроме того, значение 300 может быть полностью переменным, например, что-то вроде

GO select max(Id) from [SERVER_X].[MyDb].[dbo].[Logs]

, но это, очевидно, не работает:

 A fatal scripting error occurred.
 Incorrect syntax was encountered while parsing GO.

1 Ответ

3 голосов
/ 21 апреля 2020

Вы можете использовать рекурсивный CTE:

with n as (
      select 1 as n, max(Id) as max_id 
      from [SERVER_X].[MyDb].[dbo].[Logs]
      union all
      select n + 1, max_id
      from n
      where n < max_id
     )
insert into t
    select null, null, null, null
    from n
option (maxrecursion 0);

Вставка строк, в которых все значения равны NULL, кажется не очень полезной. Но здесь - это скрипта db <> со столбцом identity id.

...