Как вводить несколько реестров в sql server?

я должен вводить достаточно полей в таблице с полем, которое должно быть последующим, этот остался в 60395 следовательно его должно быть 60396, но чтобы быть не делать это

INSERT INTO TransaccionesX (IdTransaccion) VALUES ("6039x")

До того, чтобы заканчиваться, он хотел спросить у них, есть ли какой-то способ, которого были бы введены несколько полей с этим числом последующим.

0
задан 02.11.2019, 23:14
1 ответ

Цикл - самый худший способ решать эту проблему. Функционируй, но serГЎ медленный и конфликтный. Одна soluciГіn идеал serГ - в использование таблицы nГєmeros. Таблица nГєmeros - просто таблица последующий с колонной nГєmeros. AquГ - я оставляю пример как формировать одну.

WITH 
E(n) AS(
    SELECT n FROM (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0))E(n)
),
E2(n) AS(
    SELECT a.n FROM E a, E b
),
E4(n) AS(
    SELECT a.n FROM E2 a, E2 b
),
cteTally(n) AS(
    SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) n
    FROM E4
)
SELECT n
FROM cteTally;

, Но очевидно, это должны объединять твой INSERT, из-за которого quedarГ - в следующего способа.

WITH 
E(n) AS(
    SELECT n FROM (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0))E(n)
),
E2(n) AS(
    SELECT a.n FROM E a, E b
),
E4(n) AS(
    SELECT a.n FROM E2 a, E2 b
),
cteTally(n) AS(
    SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) n
    FROM E4
)
INSERT INTO TransaccionesX (IdTransaccion)                         -- Insertamos
SELECT ISNULL((SELECT MAX(idTransaccion) FROM TransaccionesX), 0)  -- El valor máximo
       + n                                                         -- más 1, 2, 3, etc.
FROM cteTally;

Другая opciГіn работоспособный состоит в том, чтобы использовать объект последовательности, которую он позволяет производить nГєmeros последующие. Для этого, tambiГ©n ты нуждаешься в том, чтобы иметь все необходимые линии. Имей в виду, что она creaciГіn последовательности он осуществляется однажды, хотя возможно переделывать mГЎs вперед.

CREATE SEQUENCE [dbo].[SequenciaTransaccionesX] 
 START WITH 60396 
 INCREMENT BY 1;

С созданной последовательностью, ты называешь ее следующего способа:

INSERT INTO TransaccionesX (IdTransaccion)
SELECT NEXT VALUE FOR [dbo].[SequenciaTransaccionesX] AS IdTransaccion
FROM AlgunaTabla;

Что-то, что ты должен иметь очень в виду, состоит в том, что скопление делает очень сложно, поддерживать подряд я нуждаюсь в ручной форме и формы automГЎticas могут иметь проблемы разрывов не завершенными сделками.

0
ответ дан 01.12.2019, 13:01