Datenbank-Update unter ORACLE: Unterschied zwischen den Versionen

Aus GEVITAS
Wechseln zu: Navigation, Suche
(SQL-Script)
(Links)
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:
 
(Ab Version 7.0.170815)
 
(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.
+
Oracle&copy; versteht unter Datenbank einen User/ein Schema (z.B. <code>"GEVASPRO"</code>). In der [[GEVAS-Professional Konfiguration]] kann man optional ein Präfix angeben (z.B. <code>"GEVASPRO."</code> , 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.
 
Wenn man mit Oracle-Synonymen arbeitet (und kein Präfix angibt), trat diese Problem nicht auf.
Zeile 9: Zeile 9:
 
== SQL-Script ==
 
== SQL-Script ==
  
Im SQL-Script für das Datenbank-Update werden die Objekte (Tabelle, Trigger usw.) mit einer führenden Tilde <code>~</code> angegeben. Das Programm ersetzt die Tilde zu Laufzeit dann mit dem angegebenen Präfix, also wenn das SQL-Script ausgeführt wird.
+
Im SQL-Script für das Datenbank-Update werden die Objekte (Tabelle, Trigger usw.) mit einer führenden Tilde <code>~</code> angegeben.  
  
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.
+
Beispiel:
  
Bevor Sie das Script in einem externen Tool ausführen, müssen Sie die Tilde im Script ersetzen durch:
+
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 <code>~</code>.
 +
 
 +
Bevor Sie das Script in einem externen Tool ausführen, müssen Sie die Tilde <code>~</code> im Script ersetzen durch:
  
 
* Einen Schema-Namen
 
* Einen Schema-Namen
Zeile 23: Zeile 73:
  
  
[[GEVAS-Professional Update-Beschreibungen]]
+
* [[GEVAS-Professional Update-Beschreibungen]]
 +
 
 +
* [[GEVAS-Professional Datenbank-Updates|Hinweise zu Datenbank-Updates]]
 +
 
 +
* [[GEVAS-Professional Konfiguration]]

Aktuelle Version vom 15. August 2017, 15:13 Uhr

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.

3 Links