Datenbank-Update unter ORACLE
1 Hintergrund
(Ab Version 7.0.170815)
Oracle© versteht unter Datenbank einen User/ein Schema (z.B. "GEVASPRO"
). In der GEVAS-Professional Konfiguration kann man optional ein Präfix angeben (z.B. "GEVASPRO."
, mit Punkt!), um auf verschiedene Datenbanken zuzugreifen. An manchen Stellen im Programm wurde dieses Präfix aber nicht eingesetzt. Das hatte die Konsequenz, dass z.B. ein Datenbank-Update nicht für den User/das Schema durchgeführt wurde sondern für das System-Schema.
Wenn man mit Oracle-Synonymen arbeitet (und kein Präfix angibt), trat diese Problem nicht auf.
2 SQL-Script
Im SQL-Script für das Datenbank-Update werden die Objekte (Tabelle, Trigger usw.) mit einer führenden Tilde ~
angegeben.
Beispiel:
CREATE TABLE ~BESTRUECKAN ( ID NUMBER (10,0) NOT NULL, BESTNR NUMBER (10,0) NOT NULL, ADRESSE varchar2(160) NULL, STR varchar2(40) NULL, LANDKENNZ varchar2(10) NULL, PLZ varchar2(10) NULL, ORT varchar2(40) NULL, LAND varchar2(40) NULL, SPRACHE varchar2(1) NULL, TOUR varchar2(10) NULL, ID_STRING varchar2(30) NULL, TransportZonen_ID NUMBER (10,0) DEFAULT 0, AendDat date NULL, AendUser varchar2(20) NULL ) / GRANT REFERENCES , SELECT , update , INSERT , DELETE ON ~BESTRUECKAN TO public / CREATE SEQUENCE ~BESTRUECKAN_ID_SEQ START WITH 1 INCREMENT BY 1 MAXVALUE 9999999999 MINVALUE 1 NOCYCLE CACHE 20 NOORDER / CREATE TRIGGER ~BESTRUECKAN_ID_TR BEFORE INSERT ON ~BESTRUECKAN FOR EACH ROW BEGIN IF :NEW.ID IS NULL THEN SELECT BESTRUECKAN_ID_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL; END IF; END; / CREATE UNIQUE INDEX ~BESTRUECKAN_BESTNR ON ~BESTRUECKAN(BESTNR) /
Das Programm ersetzt die Tilde zu Laufzeit dann mit dem angegebenen Präfix, also wenn das SQL-Script ausgeführt wird.
Wenn man im Datenbank-Update-Assistenten die Option "Script nicht ausführen, in Datei speichern" wählt, enthalten alle Tabellen, Trigger, Indizes usw. dieses Zeichen ~
.
Bevor Sie das Script in einem externen Tool ausführen, müssen Sie die Tilde ~
im Script ersetzen durch:
- Einen Schema-Namen
- Nichts, wenn Sie mit Synonymen arbeiten.
Wenn man mit mehreren Datenbanken arbeitet und das Script mehrfach mit unterschiedlichen Schemas ausführen muss, erleichtert die Tilde das ersetzen in das jeweilige Schema.