Zum Inhalt springen

Studdi20

Mitglieder
  • Gesamte Inhalte

    5
  • Benutzer seit

  • Letzter Besuch

  1. Hallo, das ist mir mittlerweile klar geworden. Mein nächstes Ziel ist es einen Trigger zu schreiben der vor jedem insert max(id) sowie nextval ausliesst und die Sequenz anschließend um die Differenz inkrementiert. also z.b. sowas: alter sequence faq_seq increment by maxid-value; Nur kenn ich mich leider nicht mit PL/SQL aus und werde mich zuvor reinlesen müssen. So wie ich das in einem Tutorial verstanden habe muß ich erstmal in einem Package die Variablen definieren, in einem weiteren Trigger die Werte in den Variablen speichern und schließlich den Sequenzwert mit obigem Befehl anpassen. Kann mir hierzu einer von euch Hilfestellung leisten? Wäre sehr dankbar.
  2. Achsooo :upps. Mir war nicht ganz klar wie ein Trigger arbeitet, sorry. Hab ihn jetzt deaktiviert und siehe da...es funzt Vielen Dank für deine Hilfe. Eine letzte Frage noch, ist es möglich eine Sequenz zurückzusetzen, so dass alle Datensätze einer Tabelle mit 1 beginnend eine laufende Nummerierung erhalten? Oder kann ich die Sequenz löschen und die Primärschlüsselspalte mit neuen Werten auffüllen? EDIT: Hat sich erledigt, habs mit ALTER SEQUENCE hinbekommen.
  3. servus, ja es handelt sich um ein BEFORE INSERT Trigger. CREATE OR REPLACE TRIGGER "BI_FAQS" before insert on "FAQS" for each row begin select "FAQS_SEQ".nextval into :NEW.ID from dual; end; / ALTER TRIGGER "BI_FAQS" ENABLE /[/PHP] Meinem Java-Programm übergebe ich folgende Zeichenkette um die eingegebenen Daten in der DB zu speichern: String put = "INSERT INTO FAQS VALUES (faqs_seq.NEXTVAL, ?, ?, ?)"; PreparedStatement putStmt = connection.prepareStatement(put); Aber wie gesagt, der Sequenz-Wert wird nicht wie erwartet beim Einfügen eines Datensatzes um 1 hochgezählt, sondern jeweils um 2. Die erste Zeile beginnt schon mit dem Wert 2. Woran liegt das und was genau muss ich ändern?
  4. Hallo zusammen, ich versuche in einer Tabelle Datensätze einzufügen deren ID automatisch mit dem Befehl sequenzname.NEXTVAL erhöht wird. Beim Erstellen der Sequenz habe ich Start With 1 und als Inkrement auch 1 angegeben. Trotzdem wird beim Anlegen eines Datensatzes immer eine Nummer übersprüngen (2,4,6,8 usw.) Es ist aber für mich wichtig das die Nummer laufend ist ohne Lücken dazwischen, also 1,2,3,4 usw. Ein weiteres Problem besteht darin, dass wenn eine oder mehrere Einfügeoperationen fehlschlagen, beim nächsten erfolgreichen Einfügen sogar mehrere Nummern übersprüngen werden (z.b. 1,2,5,9 usw.) Ich habe herausgefunden, dass wenn ich den Befehl .CURRVAL einsetze, also z.B. INSERT INTO TABLE VALUES (TAB_SEQ.CURRVAL, 'Test') die Inkrementierung um 1 funktioniert jedoch nur wenn ich vorher NEXTVAL ausgeführt habe. Ansonsten erhalte ich folgende Fehlermeldung: "ORA-08002: Sequenz TAB_SEQ.CURRVAL ist in dieser Session noch nicht definiert" Ich möchte die SQL-Anweisung in einem Java-Programm verwenden und es ist wie schon gesagt wichtig, dass der erste Datensatz bei 1 anfängt und alle Anderen an die zuletzt eingetragene ID anknüpfen. Wie stelle ich das genau an? Gibt es vielleicht auch eine Möglichkeit nachträglich die Sequenz für eine Primärschlüsselspalte zu ändern bzw. neu zu erstellen, so dass alle ID's der Spalte den gewünschten Kriterien entsprechen?

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...