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 3784902367Viel 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 3784902367Eine schlüssige Zusammenfassung zum Thema virtual columns liefert z.B. Tim Hall.
Keine Kommentare:
Kommentar veröffentlichen