In Oracle 10 kann man die Befüllung der HASH-Spalte via Trigger durchführen - obwohl Trigger (in der Regel) häßlich, schlecht wartbar und übel für die Performance sind:
-- 10.2.0.4 create table test ( string_value varchar2(32) , hash_value number); create or replace trigger hash_trigger before insert on test for each row begin select ora_hash(:new.string_value) into :new.hash_value from dual; end hash_trigger; / insert into test(string_value) values ('HELLO WORLD'); select * from test; STRING_VALUE HASH_VALUE -------------------------------- ---------- HELLO WORLD 3784902367
Viel hübscher geht das in 11g, wo man zu diesem Zweck virtual columns verwenden kann:
-- 11.1.0.7 create table test ( string_value varchar2(32) , hash_value NUMBER GENERATED ALWAYS AS (ora_hash(string_value)) virtual); insert into test(string_value) values ('HELLO WORLD'); select * from test; STRING_VALUE HASH_VALUE -------------------------------- ---------- HELLO WORLD 3784902367
Eine schlüssige Zusammenfassung zum Thema virtual columns liefert z.B. Tim Hall.
Keine Kommentare:
Kommentar veröffentlichen