Exportieren (0) Drucken
Alle erweitern
Erweitern Minimieren
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

SET IDENTITY_INSERT (Transact-SQL)

Ermöglicht das Einfügen expliziter Werte in die Identitätsspalte einer Tabelle.

Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version).

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }

database_name

Name der Datenbank, in der sich die angegebene Tabelle befindet.

schema_name

Der Name des Schemas, zu dem die Tabelle gehört.

table

Name einer Tabelle mit einer Identitätsspalte.

Die IDENTITY_INSERT-Eigenschaft kann in einer Sitzung zu jedem Zeitpunkt nur für eine einzige Tabelle auf ON festgelegt sein. Wenn diese Eigenschaft bereits für eine Tabelle auf ON festgelegt ist und eine SET IDENTITY_INSERT ON-Anweisung für eine andere Tabelle ausgegeben wird, gibt SQL Server eine Fehlermeldung zurück, die besagt, dass SET IDENTITY_INSERT bereits den Wert ON hat, und die angibt, für welche Tabelle der Wert ON festgelegt ist.

Wenn der eingefügte Wert größer als der aktuelle Identitätswert für die Tabelle ist, verwendet SQL Server automatisch den neu eingefügten Wert als aktuellen Identitätswert.

Die Einstellung von SET IDENTITY_INSERT wird beim Ausführen bzw. zur Laufzeit festgelegt, nicht beim Analysieren.

Der Benutzer muss der Besitzer der Tabelle sein oder die ALTER-Berechtigung für die Tabelle besitzen.

Im folgenden Beispiel wird eine Tabelle mit einer Identitätsspalte erstellt. Es zeigt, wie mithilfe der SET IDENTITY_INSERT-Einstellung eine aufgrund einer DELETE-Anweisung entstandene Lücke in den Identitätswerten gefüllt werden kann.

USE AdventureWorks2012;
GO
-- Create tool table.
CREATE TABLE dbo.Tool(
   ID INT IDENTITY NOT NULL PRIMARY KEY, 
   Name VARCHAR(40) NOT NULL
);
GO
-- Inserting values into products table.
INSERT INTO dbo.Tool(Name) 
VALUES ('Screwdriver')
        , ('Hammer')
        , ('Saw')
        , ('Shovel');
GO

-- Create a gap in the identity values.
DELETE dbo.Tool
WHERE Name = 'Saw';
GO

SELECT * 
FROM dbo.Tool;
GO

-- Try to insert an explicit ID value of 3;
-- should return a warning.
INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel');
GO
-- SET IDENTITY_INSERT to ON.
SET IDENTITY_INSERT dbo.Tool ON;
GO

-- Try to insert an explicit ID value of 3.
INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel');
GO

SELECT * 
FROM dbo.Tool;
GO
-- Drop products table.
DROP TABLE dbo.Tool;
GO

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft