Zum Inhalt springen

Oracle DB zurücksetzen


ipu

Empfohlene Beiträge

Hallo zusammen,

in der Oracle-Welt bin ich total neu, weshalb ich mich vertrauensvoll an euer Fachwissen wende und darauf hoffe, das mir jemand weiterhelfen kann. - Wir haben eine Oracle-DB aufgesetzt und mit Testdaten gefüllt. In allen Tabellen wurde eine ID als PK eingerichtet. Ein Trigger sorgt dafür, dass die Zahl immer eins hochgezählt wird. Jetzt habe ich die Testdaten gelöscht und möchte die echten Daten aus der ACCESS-DB importieren. Gibt es eine Möglichkeit, die PK zurückzusetzten auf 0, so dass das importieren keine Probleme bereitet und der Trigger anschließend ab der aktuell höchsten ID weiterzählt und nicht bei der höchsten ID der Testdaten, die ja schon gelöscht sind? Also in ACCESS kann man das ja mit DB komprimieren und reparieren.

Gruß,

ipu :rolleyes:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Über einen Trigger?

Naja das ist auch eine Möglichkeit. Wie ist der Trigger aufgbaut. Wo bekommt der Trigger die höchste ID her? Ich nehme mal an, dass er ein max auf die ID's in der Tabelle macht und so die höchste + 1 rausfindet. Wenn aber in der Tabelle nichts drin steht dann kann doch bei dem Trigger nur eine 1 rauskommen. Wie gesagt wenn er so arbeitet wie beschrieben.

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

trigger bekommen ihre werte von sequenzen.

deaktiviere die trigger beim import in die oracle und erstelle die sequenzen mit den entsprechenden anfangswerten neu.

primärschlüssel haben bei oracle nichts mit hochzählen gemeinsam (sind also nicht zu verwechseln mit z.b. autowert in access) und können nicht "zurückgesetzt werden".

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

richtig, nicht unbedingt, ist aber die sauberste und einfachste methode, würde ich meinen - wer will schon loops programmieren wenn man sequenzen start, minimum, maximum, increment by, und andere feinheiten ohne eine einzelne programmzeile beibringen kann.

aber ich schweife ab. sorry.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ehh..., ja. Vielen Dank erstmal. Aber was sind Sequenzen in Oracle? Und wo kann ich diese mit den Anfangswerte neu setzten?

Hier ist der Trigger:

CREATE OR REPLACE TRIGGER tumreg.TR_S_1774_1_PATIENT

BEFORE INSERT ON tumreg.PATIENT

FOR EACH ROW

BEGIN

SELECT tumreg.S_1774_1_PATIENT.nextval

INTO :new.ID_PATIENT

FROM dual;

END;

:confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

CREATE OR REPLACE TRIGGER tumreg.TR_S_1774_1_PATIENT

BEFORE INSERT ON tumreg.PATIENT

FOR EACH ROW

BEGIN

SELECT tumreg.S_1774_1_PATIENT.nextval

INTO :new.ID_PATIENT

FROM dual;

END;

Du benutzt die Sequence S_1774_1_PATIENT in dem Trigger.

Frank

Edit: http://tahiti.oracle.com/pls/db901/db901.tabbed?section=79390

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das mit deinem Trigger ist voll in Ordnung. Künstliche PKs generiert man am besten über Trigger, die aus einer Sequence auslesen.

Zurücksetzen kann man eine Sequence nicht.

Einfach löschen und neu anlegen. Dann zählt sie wieder von vorne. Du musst halt defnieren was "vorne" heisst, ob sie bei 1 oder 2000 zu zählen beginnt, bestimmst du beim anlegen der Sequence. Genauso in welchen Zählschritten gezählt wird.

Aber wenns nur ein künstlicher Schlüssel ist, ists doch egal... ob sie bei 1 oder 3864 zu zählen beginnt. Aber wenn du wieder "vorne" anfangen willst, dann löschen und neu anlegen.

lg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Guten Morgen zusammen,

vielen Dank für eure vielen Tipps!! Das hilft mir schon weiter denke ich. Sonst meld ich mich nochmal. Ihr seid echt gut drauf! Nur schade, dass ich das Forum nicht schon früher entdeckt habe ... . Hätte mir viel Zeit und Mühe und Frust erspart!

Schönen Tag noch,

ipu

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...