sql >> Database >  >> RDS >> Sqlserver

Ontvangen ingevoegde records altijd aaneengesloten identiteitswaarden

Ik ben het niet eens met het geaccepteerde antwoord. Dit kan eenvoudig worden getest en weerlegd door het volgende uit te voeren.

Instellen

USE tempdb

CREATE TABLE Foo
(
    ID int IDENTITY(1,1),
    Data nvarchar(max)
)

Verbinding 1

USE tempdb

SET NOCOUNT ON
WHILE NOT EXISTS(SELECT * FROM master..sysprocesses WHERE context_info = CAST('stop' AS VARBINARY(128) ))
 BEGIN
 INSERT INTO Foo (Data)
 VALUES ('blah')
 END

Verbinding 2

USE tempdb

SET NOCOUNT ON
SET CONTEXT_INFO 0x

DECLARE @Output TABLE(ID INT)

WHILE 1 = 1
BEGIN
    /*Clear out table variable from previous loop*/
    DELETE FROM  @Output

    /*Insert 1000 records*/
    INSERT INTO Foo (Data)
    OUTPUT inserted.ID INTO @Output
    SELECT TOP 1000 NEWID()
    FROM sys.all_columns

    IF EXISTS(SELECT * FROM @Output HAVING MAX(ID) - MIN(ID) <> 999 )
        BEGIN
        /*Set Context Info so other connection inserting 
          a single record in a loop terminates itself*/
        DECLARE @stop VARBINARY(128) 
        SET @stop = CAST('stop' AS VARBINARY(128))
        SET CONTEXT_INFO @stop

        /*Return results for inspection*/
        SELECT ID, DENSE_RANK() OVER (ORDER BY Grp) AS ContigSection
        FROM 
          (SELECT ID, ID - ROW_NUMBER() OVER (ORDER BY [ID]) AS Grp
           FROM @Output) O
        ORDER BY ID

        RETURN
        END
END


  1. Hoe de waarde van de SQL-resultaatkolom op te halen met behulp van de kolomnaam in Python?

  2. hoe de door komma's gescheiden waarde van de database toe te voegen, te bewerken en te verwijderen.?

  3. Hoe vervang je elke andere instantie van een bepaald teken in een MySQL-tekenreeks?

  4. Automatiseer databasetestherstel in SQL Server