Hallo,
habe ein Datenbank-Einfüge-Problem (SQLServer ) und hoffe, dass es dafür eine (einigermaßen) einfache Lösung gibt oder ich einfach nur einen Denkfehler drin hab...
Habe eine Tabelle, nennen wir sie mal "T1". Dort gibt es eine Schlüsselspalte "ID". Erster Ansatz beim Erstellen der Tabelle war ein Autowert, hier hat sich das Problem ergeben, dass man die Tabelle in der Praxis durch Einsaugen von Daten restaurieren können soll, d.h. man muss in der Lage sein, manuell einen Wert in die Spalte einzutragen. Da das mit Autowert nicht geht, war der Workaround, eine Funktion zu schreiben, die einen "Autowert" generiert, und diese Funktion wurde dann als Defaultwert eingegeben, so dass, wenn bei einem INSERT die Spalte nicht mit angegeben wird, der Schlüssel über diese Funktion generiert wird. Um es genauer zu sagen: Der Autowert der von der Funktion generiert wird liefert Max(ID)+1 zurück.
Hat in den letzten Jahren prima funktioniert, da die Anforderung bisher immer nur war, einen einzelnen Datensatz einzufügen, nicht viele auf einmal.
Jetzt aber sollen viele Daten auf einmal eingefügt werden, genauer: es wird ein INSERT gemacht mit Daten einer anderen Tabelle, wobei in der Spaltenauswahl die ID ausgelassen wird, was ja heißt es soll der Defaultwert verwendet werden. Jetzt funktioniert bei dieser Mehrfach-Einfügung die eigene Autowert-Funktion aber nicht mehr, statt für jeden neu zu machenden Eintrag eine neue Autowert-ID zu generieren, will er immer dieselbe ID einfügen, so als ob die Funktion nur einmal aufgerufen würde und dann für alle einzufügenden Zeilen gesetzt werden würde :-(
Ich hoffe ich habe das Problem verständlich rübergebracht, ansonsten kann ich auch mal meine Tabellendefinition, die Funktion und die Insert-Abfragen nachliefern.
Bin für jeden Tipp dankbar...
thx
sth_Weird
habe ein Datenbank-Einfüge-Problem (SQLServer ) und hoffe, dass es dafür eine (einigermaßen) einfache Lösung gibt oder ich einfach nur einen Denkfehler drin hab...
Habe eine Tabelle, nennen wir sie mal "T1". Dort gibt es eine Schlüsselspalte "ID". Erster Ansatz beim Erstellen der Tabelle war ein Autowert, hier hat sich das Problem ergeben, dass man die Tabelle in der Praxis durch Einsaugen von Daten restaurieren können soll, d.h. man muss in der Lage sein, manuell einen Wert in die Spalte einzutragen. Da das mit Autowert nicht geht, war der Workaround, eine Funktion zu schreiben, die einen "Autowert" generiert, und diese Funktion wurde dann als Defaultwert eingegeben, so dass, wenn bei einem INSERT die Spalte nicht mit angegeben wird, der Schlüssel über diese Funktion generiert wird. Um es genauer zu sagen: Der Autowert der von der Funktion generiert wird liefert Max(ID)+1 zurück.
Hat in den letzten Jahren prima funktioniert, da die Anforderung bisher immer nur war, einen einzelnen Datensatz einzufügen, nicht viele auf einmal.
Jetzt aber sollen viele Daten auf einmal eingefügt werden, genauer: es wird ein INSERT gemacht mit Daten einer anderen Tabelle, wobei in der Spaltenauswahl die ID ausgelassen wird, was ja heißt es soll der Defaultwert verwendet werden. Jetzt funktioniert bei dieser Mehrfach-Einfügung die eigene Autowert-Funktion aber nicht mehr, statt für jeden neu zu machenden Eintrag eine neue Autowert-ID zu generieren, will er immer dieselbe ID einfügen, so als ob die Funktion nur einmal aufgerufen würde und dann für alle einzufügenden Zeilen gesetzt werden würde :-(
Ich hoffe ich habe das Problem verständlich rübergebracht, ansonsten kann ich auch mal meine Tabellendefinition, die Funktion und die Insert-Abfragen nachliefern.
Bin für jeden Tipp dankbar...
thx
sth_Weird
Comment