drop table ei_zapis;

create table ei_zapis (
    datum date default now(), popis varchar(128), 
    ucetm int4, analm int4, dokladm varchar(32),
    ucetd int4, anald int4, dokladd varchar(32),
    mnozstvim float8, 
    mnozstvid float8, 
    castka    float8
);

create or replace function ei_zapis() returns opaque as '
    begin
    lock ei_poradi;
    insert into ei_popis (cislo, popis) 
           values ((select cislo from ei_poradi), new.popis);
    insert into ei_denik (cislo, mdd, ucet, anal, castka)
           values ((select cislo from ei_poradi), 
                    ''M'', new.ucetm, new.analm, new.castka);
    insert into ei_denik (cislo, mdd, ucet, anal, castka)
           values ((select cislo from ei_poradi), 
                    ''D'', new.ucetd, new.anald, new.castka);
    update ei_poradi set cislo=cislo+1;
    return null;
    end;
' language 'plpgsql';

create trigger ei_zapis before insert
    on ei_zapis for each row
    execute procedure ei_zapis();