Identitätsspalte kann nicht aktualisiert werden

Status
Nicht offen für weitere Antworten.

speedy_g

Mitglied
Hallo,

Ich hab eine MS SQL Datenbank (SQL Server Express 2008) und steuer die aus Java an mit dem 2005er Treiber. Java ist die Version 6 und ich entwickel unter Eclipse.

Klappt auch wunderbar.

Ich bastel grad so bißchen zum Üben von Java & der DB Anbindung, weil ich auch grad erst mit Java anfange, nen kleinen Datenbank Editor - also nur für paar wichtige Sachen.

Jetzt wollt ich eine AutoIncrement Spalte in die Tabelle einfügen - gemacht getan - wird angelegt.

Nun schreibe ich eine Zeile in die Tabelle. Es kommt obiger Fehler "Die 'Spalte1'-Identitätsspalte kann nicht aktualisiert werden."

Hier mal das Create:

Code:
CREATE TABLE TestTabelle ( Spalte1 INT CONSTRAINT pk_Spalte1_1234489708313 PRIMARY KEY IDENTITY(1,1) NOT NULL, Spalte2 VARCHAR(256) NULL );

und hier das Insert:

Code:
INSERT INTO TestTabelle (Spalte2) VALUES ('String18');


In Java verwende ich vom Statement den Batch-Mechanismus, um die Zeilen erstmal zum Batch hinzu zu fügen und dann auszuführen. Einzeln oder zusammen - funktioniert beides nicht.

Beim m_Statement.executeBatch(); wird die SQLException geschmissen.

Wenn ich aber nun das Insert-Statement direkt im SQL Server Manager ausführe, dann funktioniert sie.


Und jetzt kommt der Hammer - bevor ich den Code für das Erstellen des Insert-Statements geändert habe - also das war einfach nur ein anderer Algorithmus (die for-Schleifen sahen bißchen anders aus), wo dann das gleiche Statement bei rauskam (der alte Algorithmus hatte nur nen Problem, wenn die AutoIncrement-Spalte die letzte Spalte war) ... jedenfalls bin ich der Meinung nur das geändert zu haben ... na jedenfalls .... davor hatte es funktioniert.

Ich hab das schon auf Tabellen getestet, wo es vorher funktioniert hatte, auf neue Tabellen und in einer neuen Datenbank. Selbst nen Windows-Neustart half nichts. ;)

.... und jetzt sitz ich hier schon paar Stunden und grübel vor mich hin, was ich denn da jetzt falsch/anders mache.


Jemand ne Idee, was ich noch ausprobieren könnte ?

Ich denke mal, irgendwelchen Source zu posten bringt nicht wirklich was - weil die Statements sind ja eigentlich richtig. Wenn ich doch was posten kann, dann sagt es bitte.


MFG,
speedy
 

speedy_g

Mitglied
mal probiert für spalte1 einfach null im insert einzufügen?

Ne, funktioniert nicht. :(

Ich hab dann eben nochmal eine kleine Testreihe durchgeführt - jetzt wirds so richtig mysteriös denke ich.

Ausgangszustand - in der Tabelle ist eine Zeile inkl. AutoIncrement drin, weil durch den MS SQL Server Manager mit dem Statement eingefügt. Spalte1 hat den Wert 1, Spalte2 den Wert "String123".

Also erstmal der Vorschlag:

INSERT INTO TestTabelle (Spalte1,Spalte2) VALUES (0,'Zeile2');

Kommt jenes:
Die 'Spalte1'-Identitätsspalte kann nicht aktualisiert werden.

Dann ...

INSERT INTO TestTabelle (Spalte1,Spalte2) VALUES (1,'Zeile2');

Kommt ...
Ein expliziter Wert für die Identitätsspalte kann nicht in der 'TestTabelle'-Tabelle eingefügt werden, wenn IDENTITY_INSERT auf OFF festgelegt ist.

Jetzt sehe ich auf einmal, der Wert in obiger Zeile 1 hat sich von "String123" auf "Zeile2" geändert.

Also nochmal verifiziert....

INSERT INTO TestTabelle (Spalte1,Spalte2) VALUES (1,'Zeile277777');

Kommt wieder jenes ....
Ein expliziter Wert für die Identitätsspalte kann nicht in der 'TestTabelle'-Tabelle eingefügt werden, wenn IDENTITY_INSERT auf OFF festgelegt ist.

Aber der Wert der Spalte2 wurde von "Zeile2" auf "Zeile277777" gesetzt.

Nun also mal jenes ausprobiert....

SET IDENTITY_INSERT TestTabelle ON;
INSERT INTO TestTabelle (Spalte1,Spalte2) VALUES (1,'Zeile999');

Kommt logischerweise das....
Verletzung der PRIMARY KEY-Einschränkung 'pk_Spalte1_1234489708313'. Ein doppelter Schlüssel kann in das 'dbo.TestTabelle'-Objekt nicht eingefügt werden.

Aber der Wert der Spalte2 wurde von "Zeile277777" auf "Zeile999" gesetzt.

Als nächstes...

SET IDENTITY_INSERT TestTabelle ON;
INSERT INTO TestTabelle (Spalte1,Spalte2) VALUES (0,'Zeile555');

Kommt...
Die 'Spalte1'-Identitätsspalte kann nicht aktualisiert werden.

Und die Zeile 1 mit "Zeile999" drin wurde Erwartungsgemäß nicht geändert.

Nun jenes getestet....

SET IDENTITY_INSERT TestTabelle ON;
INSERT INTO TestTabelle (Spalte1,Spalte2) VALUES (2,'Zeile444');

Die Zeile wird ohne zu meckern eingefügt.

Also nochmal ne Chance geben...

SET IDENTITY_INSERT TestTabelle OFF;
INSERT INTO TestTabelle (Spalte1,Spalte2) VALUES (0,'Zeile333');

Die 'Spalte1'-Identitätsspalte kann nicht aktualisiert werden.

Es wurde auch nichts eingefügt.



MFG,
speedy
 

speedy_g

Mitglied
Grad nochmal die Antwort von HoaX kapiert bzw. nochmal getestet.

Also jenes...

SET IDENTITY_INSERT TestTabelle OFF;
INSERT INTO TestTabelle (Spalte1,Spalte2) VALUES (NULL,'Zeile222');

Dann kommt jenes...

DEFAULT und NULL sind nicht als explizite Identitätswerte zulässig.

Und es wird auch nichts eingefügt - ist ja auch logisch. Die Spalte wurde ja auf "NOT NULL" gesetzt bzw. ist das "NOT NULL" setzen der Spalte eine Voraussetzung dafür, daß die Tabelle angelegt wird ... aber klar - ein Versuch war es Wert.


MFG,
speedy
 

speedy_g

Mitglied
Nochmal die Chance ohne Spalte1 ...

SET IDENTITY_INSERT TestTabelle OFF;
INSERT INTO TestTabelle (Spalte2) VALUES ('Zeile111');

Die 'Spalte1'-Identitätsspalte kann nicht aktualisiert werden.


Die Meldung auf Englisch ist übrigens jene: (aus einer Group kopiert)

Server: Msg 8102, Level 16, State 1, Line 1
Cannot update identity column 'b'.

Aber mehr als die deutsche verrät die mir auch nicht.


MFG,
speedy
 

speedy_g

Mitglied
Jetzt wird doch der Hahn in der Pfanne verrückt :shock: - aber nicht wirklich mit Erfolg. :(

Also hab eben jenes gemacht:

CREATE TABLE TestTabelle2 ( Spalte1 INT CONSTRAINT pk_Spalte1_1234523474765 PRIMARY KEY NOT NULL, Spalte2 INT IDENTITY(1,1) NOT NULL );

INSERT INTO TestTabelle2 (Spalte1) VALUES (1);

Es kommt:
Die 'Spalte2'-Identitätsspalte kann nicht aktualisiert werden.

Ich hab beide Befehle in einem Batch-Job Statement ausgeführt, wobei ich beide Zeilen separat hinzugefügt habe.

Jetzt das verrückte - die Zeile ist drin und der AutoIncrement auf 1 gesetzt. :shock: - trotz Fehlermeldung.

Also gleich noch paar Zeilen versucht hinzu zu fügen - hat nicht funktioniert. :(


Also reproduziert - neue Tabelle mit einer Zeile zusammen in einem Batch-Job .... funktioniert - aber mit Fehlermeldung.

Nochmal reproduziert - neue Tabelle jetzt ganz mutig mit 3 Zeilen - alles in einem Batch-Job .... funktioniert - das Increment wird jeweils hochgesetzt - aber trotzdem kommt die Fehlermeldung. :shock:

Eine weitere Zeile hinzugefügt in einem separaten Batch-Job - nur die Fehlermeldung.


MFG,
speedy
 

speedy_g

Mitglied
Hmm, niemand ne Idee ?

Ich wär auch für Überlegungen ala "Ist der Computer eingeschaltet" dankbar - also auf Java-Ebene natürlich :) Bin doch Anfänger bei Java und vielleicht hab ich ja einfach was vergessen zu machen.


MFG,
speedy
 
M

maki

Gast
Schau dir die Tabllenen Def. doch mal im Enterprise Manager an, ob da wirklich nur die 1. Spalte als Autoinkrement defniert ist.
 

speedy_g

Mitglied
Ja - ist sie.

Also ich hab inzwischen eine Tabelle zum Testen, wo die erste Spalte der Primary Key ist und die zweite Spalte der AutoIncrement.

Wird auch so im Manager angezeigt.

Direkt im Manager funktioniert es ja auch immernoch problemlos mit den Statements. :(


MFG,
speedy
 

speedy_g

Mitglied
Nein, ich sag nicht woran es gelegen hat. Das ist einfach zu peinlich. :oops:

Typischer Fall von !(Mein Code macht das was ich will) und dem ganzen grünen Zeug im Wald. :D


MFG,
speedy
 

speedy_g

Mitglied
Eine andere Methode hat mehr gemacht, als sie sollte - weil ein paar Flags anders waren, als sie eigentlich sein sollten. Und somit wurde nicht nur das Insert gebaut, sondern auch ein Update der AutoIncrement-Spalte. :oops: Und an die Stelle hatte ich natürlich nicht geguckt, weil ich dachte, da geht er nicht rein.


MFG,
speedy
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W MySQL-Connector funktioniert nicht über WLAN -> MacOS Datenbankprogrammierung 10
M Meine Datenbank lässt sich mit meiner Methode nicht ändern Datenbankprogrammierung 1
P Reicht finally nicht um DB connections zu schließen in (altem) Java? Datenbankprogrammierung 4
D JOIN COLUMN wird nicht genommen Datenbankprogrammierung 2
Maxim6394 JPA / EclipseLink - n:m Beziehung wird nicht aktualisiert Datenbankprogrammierung 0
J SQLite Abfrage fehlerhaft - komme nicht weiter - please help. Datenbankprogrammierung 3
D Ich möchte dass ich nachdem man den Kommentar geschrieben hat den Kommentar in den Tabelle Bestellübersicht geschbeichert wird klappt nicht bei mir Datenbankprogrammierung 2
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
A Java DB Server lässt sich nicht starten Datenbankprogrammierung 3
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
T Datenzeilen werden nicht gelöscht Datenbankprogrammierung 6
Warum funktioniert MySQL nicht Datenbankprogrammierung 8
S Das printen der Ausgabe des Oracle-SQL-Statements in der Java-Eclipse-Konsole funktioniert nicht Datenbankprogrammierung 6
S Datenbankprogrammierung in Java unter NetBeans 12 funktioniert nicht! Datenbankprogrammierung 1
pkm PostgreSQL Kann mit mybatis einen Parameter für eine postgreSQL-Abfrage nicht übergeben. Datenbankprogrammierung 5
Davee SQLite SQLite Datenbank lässt sich nicht auf anderen PCs öffnen Datenbankprogrammierung 8
Watsoon Treiber wird in Intellij nicht geladen Datenbankprogrammierung 2
Kirby.exe PreparedStatement wird nicht ausgeführt Datenbankprogrammierung 5
rafi072001 MicroServices EurekaClient findet anderern EurekaClient nicht Datenbankprogrammierung 1
D JPA gleiche methode funktioniert an einer Stelle, an der anderen nicht Datenbankprogrammierung 3
Z Datenbank Choicebox wird nicht befüllt Datenbankprogrammierung 15
pkm PostgreSQL Auf eine Spalte kann aus einem Teil der SQL-Aussage nicht zugegriffen werden Datenbankprogrammierung 3
G MySQL JDBC Metadaten auslesen aus .accdb -> Primärschlüssel manchmal erkannt manchmal nicht Datenbankprogrammierung 3
C MySQL SQL Statement wir nicht ausgeführt Datenbankprogrammierung 11
N Sqlite DB mit Java wird auf Linuxsystem nicht gefunden Datenbankprogrammierung 9
pkm Tomcat Classloader findet bei JPA-Persistierung die Persistence Unit nicht. Datenbankprogrammierung 11
F Tabellen automatisch erstellen wenn sie nicht existieren Datenbankprogrammierung 6
J Netbeans 11 und Eclipse JPA 2.5 Entity wird nicht gefunden Datenbankprogrammierung 4
J Java fügt Datensätze ein aber diese werden nicht richtig abgefragt Datenbankprogrammierung 3
J Firebase KeepSynced funktioniert nicht Datenbankprogrammierung 0
OnDemand MySQL Trigger löst nicht aus bei Hibernate Update Datenbankprogrammierung 12
R HSQLDB ResultSet update aktualisiert DB, aber nicht das ResultSet Datenbankprogrammierung 2
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
B MySQL Data Tools Plattform - "Database Connections" findet den Treiber nicht Datenbankprogrammierung 1
OnDemand One to Many bekomm es nicht hin Datenbankprogrammierung 7
L SQL-Statement INSERT INTO ON DUPLICATE KEY UPDATE funktioniert nicht Datenbankprogrammierung 5
OnDemand Update auf Mysql läuft nicht durch Datenbankprogrammierung 30
R jdbc-Zugriff Nicht erlaubt ? Datenbankprogrammierung 16
F H2 ObjectOptimisticLockingFailureException wird nicht geworfen Datenbankprogrammierung 0
R findet Derby.DB nicht !? Datenbankprogrammierung 5
I Datenbankverbindung Oracle DB klappt nicht - getConnection returned null Datenbankprogrammierung 8
X SQLite SQLite Programm beendet/führt nicht weiter aus Datenbankprogrammierung 12
P LDAP: Daten eintragen funktioniert nicht Datenbankprogrammierung 7
Ananaskirsche Datenbanktreiber kann nicht geladen werden Datenbankprogrammierung 2
S sun.jdbc.odbc.JdbcOdbcDriver wird nicht gefunden Datenbankprogrammierung 2
U Kann die Tabellen nicht finden Datenbankprogrammierung 0
M Java Datenbankanbindung funktioniert nicht Datenbankprogrammierung 4
C MYSQL kann wert nicht eintragen Datenbankprogrammierung 3
J Verbindung zu Derby Datenbank funktioniert nicht Datenbankprogrammierung 14
S MySQL MySQL will einfach nicht, bitte um Rat Datenbankprogrammierung 4
E Warum funktioniert das Erzeugen einer View nicht? Datenbankprogrammierung 1
E Warum kann mein SQL-File nicht in DB2 ausgeführt werden? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
T Tabellen von nicht mehr vorhandenen Entities werden generiert Datenbankprogrammierung 0
OnDemand Update table SET will nicht Datenbankprogrammierung 9
M DB-Zugriff funktioniert nach JAR-Erstellung nicht mehr Datenbankprogrammierung 3
J SQL-Statement Meine insert befehle funktionieren nicht und ich weiß nicht wo der fehler liegt Datenbankprogrammierung 5
S MySQL Speicher wird nicht freigegeben bei Datenbankabfragen Datenbankprogrammierung 6
L SQL Statement mit Switch-Case funktioniert nicht Datenbankprogrammierung 6
D MySQL Eingabe wird nicht übernommen... Datenbankprogrammierung 11
H Derby: SYSCS_UTIL.SYSCS_EXPORT_QUERY mit String Abfrage in wehre-Klausel nicht möglich Datenbankprogrammierung 3
F sun.jdbc.odbc.jdbcodbcdriver wird nicht gefuden Datenbankprogrammierung 3
L JTable-DB: Letzter wert wird nicht angezeigt. Datenbankprogrammierung 0
I Datenbank Verbindung geht nicht Datenbankprogrammierung 2
L MySQL App/Java Zugriff auf Mysql-DB funktioniert nicht Datenbankprogrammierung 1
I Kann nicht mit iiS DB Verbinden Datenbankprogrammierung 1
S Verbindungsaufbau zu MySql Datenbank nicht möglich Datenbankprogrammierung 3
D [xBaseJ] Datei kann nicht geöffnet werden Datenbankprogrammierung 2
N JDBC: rollback() bei Exception geht nicht!? Datenbankprogrammierung 1
K Datenbank wird bei Programmstart als .jar nicht mehr befüllt Datenbankprogrammierung 12
R Datenbankverbindung kann nicht hergestellt werden Datenbankprogrammierung 8
M Oracle Bekomme fertiges Tool nicht ans Laufen Datenbankprogrammierung 3
V Test H2-DB löscht nicht die IDs Datenbankprogrammierung 0
P PostgreSQL Java-Anwendung zählt rollbacks nicht Datenbankprogrammierung 0
M Finde einen eifachen Befehl nicht Datenbankprogrammierung 4
T MySQL Datetime wird auf Sekunden gerundet, soll es aber nicht Datenbankprogrammierung 2
P MySQL jpmdbc: Kann lesen aber nicht schreiben? Datenbankprogrammierung 3
1 MySQL Verbindung mit localhost als IP funktioniert, aber mit normaler IP nicht Datenbankprogrammierung 2
M Derby/JavaDB Neu geschriebener Eintrag per UPDATE lässt sich nicht unmittelbar abrufen Datenbankprogrammierung 2
J Datenbankeintag eines Warenkorbes funktioniert nicht Datenbankprogrammierung 4
AMStyles Kann Wert nicht speichern (MAX VALUE) Datenbankprogrammierung 9
M MySQL INSERT will einfach nicht funktionieren Datenbankprogrammierung 9
A Nach Export mysql Verbindung zur Datenbank nicht möglich, was tun? Datenbankprogrammierung 7
T SQL-Statement case when then klappt nicht Datenbankprogrammierung 4
B DB2 Hibernate findet Datenbank nicht Datenbankprogrammierung 18
J JDBC in Library|"Treiber konnte nicht geladen werden"" Datenbankprogrammierung 2
D MySQL Treiber konnte nicht geladen werden Datenbankprogrammierung 3
P JSF + H2 + TomEE + Hibernate/JPA Datenbank wird nicht angelegt Datenbankprogrammierung 3
C Db4o speichert verschachtelte Objekte nicht vollständig Datenbankprogrammierung 8
P SQL-Statement "Top 1" oder "limit" funktioniert nicht Datenbankprogrammierung 12
C Programm wird nach DB-Eintrag nicht weitergeführt Datenbankprogrammierung 5
R sqlite UPDATE wirkt nicht aus Java Datenbankprogrammierung 7
crashfinger jdbc-connection mit jre7 funktioniert nicht Datenbankprogrammierung 5
R PostgreSQL Tabellen hinzufügen, falls nicht vorhanden Datenbankprogrammierung 3
T f:event preRenderView Trigger wird nicht ausgeführt Datenbankprogrammierung 4
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
D Derby Datenbank bei Export zu JAR-Datei nicht möglich Datenbankprogrammierung 8
A MySQL Datensatz wird nicht richtig gelöscht Datenbankprogrammierung 6
X3TitanCore mysqldump funktioniert nicht Datenbankprogrammierung 8

Ähnliche Java Themen

Neue Themen


Oben