Hallo zusammen,

ich hab ein kleines Problem (oder ich seh den Wald vor lauter Bäumen nicht mehr...) mit der crypt Funktion, bzw. ihrem Gebrauch in Rules.

Wenn ich eine Tabelle tt habe und einen regulären Insert mache, funktioniert auch der Gebrauch von crypt:

=> create table tt (un varchar(10), pw varchar(128));
CREATE TABLE
=> insert into tt values ('me', crypt('pass',gen_salt('bf')));
INSERT 0 1
mitarbeiterideen=> select * from tt;
 un |                              pw
----+--------------------------------------------------------------
 me | $2a$06$RHCI.brrz/UedPhDokDgTumljCvbG1QBofLWNaQfkaii6KzLFAO0y
(1 Zeile)



Funktioniert. Aber ich möchte jetzt gerne, daß das pw Feld per crypt verschlüsselt wird, auch wenn die Applikation nur plain übergibt, also
nur 'me' und 'pass'. Also dachte ich, ich kann das mit einer Regel lösen:

=> CREATE RULE pw_tt AS ON INSERT TO tt
-> DO INSTEAD
-> INSERT INTO tt VALUES (NEW.un, crypt(NEW.pw, gen_salt('bf')));
CREATE RULE

=> insert into tt values ('me', 'pass');
FEHLER:  unendliche Rekursion entdeckt in Regeln für Relation »tt«



Kann mir bitte jemand erklären, wo hier der Fehler liegt? Ich schein betriebsblind zu sein, aber ich weiß nicht, woher er die Rekursionen holt...

Vielen Dank und Gruß
  Oliver