IDENTITY_INSERT ist bereits für die Tabelle 'X' aktiviert. SET-Operation für Tabelle 'Y' kann nicht ausgeführt werden

8

Ich habe einen Trigger erstellt, der eine Überprüfung durchführt und Daten automatisch in zwei Tabellen auffüllt. Nur was passiert der folgende Fehler:

%Vor%

Ich habe dies während der Untersuchung des Fehlers gefunden:

"Zu jeder Zeit kann nur eine Tabelle in einer Sitzung die IDENTITY_INSERT-Eigenschaft auf ON gesetzt haben."

Die Lösung war also einfach:

%Vor%

Da die Daten jedoch per Trigger gefüllt werden, ist dies nicht möglich.

Hat jemand bitte eine Lösung für mein Problem?

Ich entschuldige mich.

Danke euch allen.

Auslöser -----

%Vor%

Datenbank ----

    
user3320956 23.05.2014, 15:04
quelle

2 Antworten

5

Erlauben Sie SQL Server, die Identitätswerte automatisch für Sie einzufügen. Da dies ein Trigger ist, können mehrere Zeilen gleichzeitig eingefügt werden. Für Ein-Zeilen-Einfügungen können Sie SCOPE_IDENTITY() function ( Ссылка ) verwenden, um den Identitätswert abzurufen Ihrer letzten eingefügten Zeile. Allerdings , da wir mehrere Zeilen in einen Trigger einfügen könnten, verwenden wir die OUTPUT -Klausel ( Ссылка ), um eine Liste der eingefügten IdAlarme -Werte für jede idRegisto zu erhalten.

Ich nehme an, dass alarmes.IdAlarme und sensores_em_alerta.id_sensores_em_alerta die beiden Identitätsfelder in diesem Trigger sind. Wenn dies der Fall ist, sollte dies funktionieren:

%Vor%     
BateTech 23.05.2014, 17:23
quelle
21

Ich hatte ein ähnliches Problem, aber es gab keine Tabellenauslöser. Ich habe ein Skript ausgeführt, das Daten für mehrere Tabellen aktualisiert, und ich habe einen Fremdschlüssel-Referenzfehler gefunden.

Nach MSDN :

  

Zu jeder Zeit kann nur eine Tabelle in einer Sitzung IDENTITY_INSERT haben   Eigenschaft auf EIN gesetzt.

Um dies zu beheben, habe ich SET IDENTITY_INSERT [dbo].[table_name] OFF für jede Tabelle ausgeführt, in die ich einfügen wollte. Dann konnte ich meine Tabellen wieder auffrischen, nachdem ich den Referenzfehler korrigiert hatte.

Bearbeiten: Ich sollte auch erwähnen, dass Sie einfach trennen und dann wieder verbinden können, um Ihre Sitzung zurückzusetzen.

    
fujiiface 01.06.2016 18:09
quelle

Tags und Links