触发器函数 - 创建一个触发器,每当在 table "zaposlenici" 中添加或更改某些内容时设置列 "inicijali"

Trigger Functions - Make a trigger that sets the column "inicijali" whenever something is added or changed in table "zaposlenici"

LINK TO PASTEBIN

问题:

1)

-- 添加一列 "inicijali" (类型 VARCHAR )到 table "zaposlenici"

-- 创建一个设置列 "inicijali" 的触发器(用 table "zaposlenici" 中人名的首字母填充)

--每当在 table "zaposlenici"

中插入或更新内容时

2)

此问题已解决

--创建一个触发器,只要 table "proizvodi"

中有更改或添加的行,就会设置列 "cijena_ukupno"

--设置为cijena_ukupno = cijena_bez_pdv + pdv_vrijednost

LINK TO PASTEBIN

这是问题 2) 的答案。我需要有关问题 1 的帮助。

CREATE OR REPLACE TRIGGER t_proizvod
BEFORE INSERT OR UPDATE ON proizvodi
FOR EACH ROW
BEGIN
    :NEW.cijena_bez_pdv := :NEW.cijena_ukupno - :NEW.pdv;
END;

答案

1) 还需要

2)

create or replace trigger t_proizvod
before insert or update proizvodi
for each row
begin
:NEW.cijena_bez_pdv := :NEW.cijena_ukupno - :NEW.pdv;
end;

我为您的 table 创建了一个 较短的 版本,因为其余版本与本案例无关。

SQL> create table zaposlenici (
  2    id      number not null,
  3    ime     varchar2(20 char) not null,
  4    prezime varchar2(20 char) not null
  5  );

Table created.

添加新列:

SQL> alter table zaposlenici add inicijali varchar2(5);

Table altered.

触发器:

SQL> create or replace trigger trg_aiu_zap
  2    before insert or update on zaposlenici
  3    for each row
  4  begin
  5    :new.inicijali := upper(substr(:new.ime, 1, 1)) ||
  6                      upper(substr(:new.prezime, 1, 1));
  7  end;
  8  /

Trigger created.

测试:

SQL> insert into zaposlenici (id, ime, prezime) values (1, 'Little', 'Foot');

1 row created.

SQL> insert into zaposlenici (id, ime, prezime) values (2, 'Velika', 'Gorica');

1 row created.

SQL> select * From zaposlenici order by id;

        ID IME                  PREZIME              INICI
---------- -------------------- -------------------- -----
         1 Little               Foot                 LF
         2 Velika               Gorica               VG

SQL> update zaposlenici set prezime = 'Zagreb' where id = 2;

1 row updated.

SQL> select * From zaposlenici order by id;

        ID IME                  PREZIME              INICI
---------- -------------------- -------------------- -----
         1 Little               Foot                 LF
         2 Velika               Zagreb               VZ

SQL>