Hallo,
Ich habe ein mysteriöses Phänomen in einer unserer Datenbanken.
Dort gibt es u.a. diese beiden Tabellen:
USER_PRO
Code:
CREATE TABLE USER_PRO (
ID INTEGER NOT NULL,
"NAME" VARCHAR(30),
PASSWORT VARCHAR(30),
PROJECT VARCHAR(50),
HAUPTUSER SMALLINT,
NURLESEN SMALLINT,
DATENBANK VARCHAR(1));
ALTER TABLE USER_PRO ADD PRIMARY KEY (ID);
und
ZZ_AUD_VISIT_PRO
Code:
CREATE TABLE ZZ_AUD_VISIT_PRO (
O_ID INTEGER,
N_ID INTEGER,
O_PROJECT VARCHAR(50),
N_PROJECT VARCHAR(50),
O_SORTORDER INTEGER,
N_SORTORDER INTEGER,
O_VISIT VARCHAR(50),
N_VISIT VARCHAR(50),
O_CHGLG_ID INTEGER,
N_CHGLG_ID INTEGER,
O_VISIT_VALUE VARCHAR(200),
N_VISIT_VALUE VARCHAR(200),
AUSER VARCHAR(20),
AFIELD VARCHAR(20),
ADATE TIMESTAMP,
AID INTEGER,
CONN_ID INTEGER);
ZZ_AUD_VISIT_PRO ist die Audit Trail Tabelle der Tabelle VISIT_PRO d.h. es werden alle Änderungen an VISIT_PRO in ZZ_AUD_VISIT_PRO per
DB-Trigger dokumentiert.
USER_PRO hat ebenfalls eine eigene Audit Trail Tabelle mit einem eigenen Satz Trigger.
Die
DB-User haben für normale Tabellen alle Rechte (SELECT, INSERT, UPDATE, DELETE, REFERENCE).
Für Audit Trail Tabellen haben sie lediglich (SELECT, INSERT, REFERENCE)
Wenn man nun dieses
SQL ausführt:
Code:
UPDATE USER_PRO SET DATENBANK = 'T' WHERE ID = 4886
bekommt man diesen Fehler:
This user does not have privilege to perform this operation on this object.No permission for update/write
access to COLUMN USER_PRO.DATENBANK.
Bekommt der User das UPDATE-Recht für die ZZ_AUD_VISIT_PRO, wird das Update korrekt ausgeführt.
Warum gibt es da diese Abhängigkeit?
Die Trigger wurden hier schon von mehr als zwei Paar Augen überprüft, die machen lediglich ein INSERT in ihre jeweiligen Audit Trail Tabelle.