Open Source im professionellen Einsatz

Viele Möglichkeiten

Neben dem Bedienen von Triggern und dem Hochziehen einer sicheren Zugriffsschicht, wie es der Artikel zeigt, eignen sich Stored Procedures auch hierzu:

  • Sie prüfen über »CHECK« -Constraints Einträge in Tabellen auf inhaltliche Richtigkeit.
  • Sie beschleunigen mit funktionalen Indexen Inhalte, die auf der Berechnung eines Feldinhalts beruhen.

Trigger sorgen ihrerseits dafür, dass die Datenbank selbsttätig (Routine-)Arbeiten auslöst. Dazu kann auch gehören, exakte Feldinhalte zu erzwingen. Entsteht zum Beispiel die Notwendigkeit, dass Artikelnummern aus Ziffern und Großbuchstaben zu bestehen haben, kann dies eine »CHECK« -Condition garantieren und ein Before-Trigger bei »INSERT« und »UPDATE« praktisch umsetzen. Stored Procedures und Trigger, die Minenarbeiter moderner Datenbanken, sind sich für keinen harten Job zu Schade. (jk)

Eingebettetes bei Oracle DB & Co.

PostgreSQL besitzt bei Weitem nicht die einzige Engine, die Stored Procedures und Trigger offeriert. MySQL etwa sieht SQL:2003 http://4 fürs Speichern von Funktionen vor, Oracle neben SQL die Sprachen PL/SQL und Java.

Ein Oracle-Trigger kann durch Anweisungen wie Insert, Update, Delete, Create, Alter, Drop, eine Before-after-Angabe oder durch eine Datenbankoperation wie Login, Logout, Startup oder Shutdown angestoßen werden (Listing 5). Per Trigger prüfen Oracle-Programmierer beispielsweise die Integrität einer DML-Anweisung. Mit PostgreSQL hat Oracle gemein, »INSTEAD OF« -Trigger verwendet zu können, um Daten über Views upzudaten.

Ebenso wie PostgreSQL versprechen sich MySQL und Oracle von Stored Procedures einen Performancegewinn für oft vorkommende Abläufe, da nur ein Bruchteil der Daten zwischen Client und Datenbankserver zirkuliert. Gleichzeitig geht dies mit einer Rechte-Reduzierung der Datenbankclients einher, die nun keinen direkten SQL-Code mehr absetzen (Listing 6). Aktuelle Oracle-Versionen berücksichtigen Trigger und Stored Procedures bei Datenbank-Ex- und -Importen automatisch. (Dominik Wieczorek)

Listing 5

Trigger für Oracle DB

01 create or replace
02 TRIGGER update_job_history
03   AFTER UPDATE OF job_id, department_id ON employees
04   FOR EACH ROW
05 BEGIN
06   add_job_history(:old.employee_id, :old.hire_date, sysdate, :old.job_id, :old.department_id);
07 END;

Listing 6

Stored Procedure für Oracle DB

01 create or replace
02 PROCEDURE add_job_history
03   (  p_emp_id          job_history.employee_id%type
04    , p_start_date      job_history.start_date%type
05    , p_end_date        job_history.end_date%type
06    , p_job_id          job_history.job_id%type
07    , p_department_id   job_history.department_id%type
08    )
09 IS
10 BEGIN
11   INSERT INTO job_history (employee_id, start_date, end_date, job_id, department_id)
12     VALUES(p_emp_id, p_start_date, p_end_date, p_job_id, p_department_id);
13 END add_job_history;

Der Autor

Andreas Kretschmer ist seit mehr als zehn Jahren in der deutschen PostgreSQL-Community aktiv und arbeitet im technischen Support bei Internet24.

Andreas Scherbaum beschäftigt sich seit 1999 mit PostgreSQL. Er ist in der deutschen und der europäischen PostgreSQL-Usergroup aktiv, arbeitet für EMC/Greenplum und beschäftigt sich mit Big-Data-Problemen bei Data-Warehouses.

Dominik Wieczorek arbeitet seit 2008 im kommunalen Rechenzentrum Niederrhein als Oracle-Datenbankadministrator.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook