create or replace trigger νΈλ¦¬κ±°λͺ
before|after
insert|update|delete
on ν
μ΄λΈλͺ
[for each row]
declare
μ μΈλΆ;
begin
ꡬνλΆ;
exception
μμΈμ²λ¦¬λΆ;
end
μμ
-- tblInsa > μ§μ μμ
create or replace trigger trgInsa
before -- μμ κ° λ°μνκΈ° μ§μ μ μλμ ꡬνλΆλ₯Ό λ¨Όμ μ€νν΄λΌ! > before trigger
delete -- μμ κ° λ°μνλμ§?
on tblInsa -- tblInsa ν
μ΄λΈμμ(κ°μ)
begin
dbms_output.put_line(to_char(sysdate, 'hh24:mi:ss') || ' νΈλ¦¬κ±°κ° μ€νλμμ΅λλ€.');
-- μμμΌμλ ν΄μ¬κ° λΆκ°λ₯
if to_char(sysdate, 'dy') = 'μ' then
-- κ°μ λ‘ μλ¬ λ°μ
-- throw new Exception()
-- -20000 ~ -29999
raise_application_error(-20001, 'μμμΌμλ ν΄μ¬κ° λΆκ°λ₯ν©λλ€.');
end if;
end trgInsa;
-- μ΄λ κ² νλ²μ insert, update, deleteλ₯Ό κ°μν μ μλ€. -> inserting, updating, deleting ν€μλ μ¬μ©
create or replace trigger trgDiary
after
insert or update or delete
on tblDiary
declare
vmessage varchar2(1000);
begin
-- dbms_output.put_line(to_char(sysdate, 'hh24:mi:ss') || ' νΈλ¦¬κ±°κ° μ€νλμμ΅λλ€.');
if inserting then
-- dbms_output.put_line('μΆκ°');
vmessage := 'μλ‘μ΄ νλͺ©μ΄ μΆκ°λμμ΅λλ€.';
elsif updating then
-- dbms_output.put_line('μμ ');
vmessage := 'κΈ°μ‘΄ νλͺ©μ΄ μμ λμμ΅λλ€.';
elsif deleting then
-- dbms_output.put_line('μμ ');
vmessage := 'κΈ°μ‘΄ νλͺ©μ΄ μμ λμμ΅λλ€.';
end if;
insert into tblLogDiary values (seqLogDiary.nextVal, vmessage, default);
end trgDiary;
ν(Record) λ¨μ νΈλ¦¬κ±°
μ¬κ±΄μ μ μ©λ νμ κ°μλ§νΌ > νΈλ¦¬κ±°κ° νΈμΆ
μ μ©λ λ μ½λμ μ λ³΄κ° μ€μν κ²½μ° + μ¬κ±΄ μ체보λ€..
μκ΄ κ΄κ³λ₯Ό μ¬μ©νλ€. > μΌμ’ μ κ°μ λ μ½λ > :old, :new
insert
- :new > λ°©κΈ μΆκ°λ ν
update
- :old > μμ λκΈ° μ ν
- :new > μμ λ ν ν
delete
- :old > μμ λκΈ° μ ν
μμ
create or replace trigger trgMen
after
delete
on tblMen
--for each row -- νλ¨μ νΈλ¦¬κ±°. μ΄κ±° μμΌλ©΄ λ¬Έμ₯λ¨μ νΈλ¦¬κ±°λ€. μ€νλ νμ κ°μμ λ§κ² νΈλ¦¬κ±°λ₯Ό μ€ννλ€λ λ».
begin
dbms_output.put_line('λ μ½λλ₯Ό μμ νμ΅λλ€.' || :old.name);
end trgMen;
delete from tblMen where name = 'νκΈΈλ'; -- 1λͺ
μμ > νΈλ¦¬κ±° 1ν μ€ν
delete from tblMen where age < 25; -- νΈλ¦¬κ±°λ 1ν μ€ν - μΆλ ₯μ νλ²λ§ λλ€. νμ§λ§ μ κ±°λ 3κ° λͺ¨λ λ€ λμλ€.
-- μ¬μ©. ν νλ§λ€ μΆλ ₯λλ€.
create or replace trigger trgMen
after
update
on tblMen
for each row
begin
dbms_output.put_line('λ μ½λλ₯Ό μμ νμ΅λλ€. > ' || :old.name);
dbms_output.put_line('μμ νκΈ° μ λμ΄: ' || :old.age);
dbms_output.put_line('μμ ν ν λμ΄: ' || :new.age);
end trgMen;
update tblMen set age = age + 1 where name = 'νκΈΈλ';
update tblMen set age = age + 1;
μλ‘μ΄ κ³μ μ λ§λ€κ³ κΆνμ μμ±, μμ νλ κ²μ λ°°μ λ€.
create user hong identified by java1234; -- ORA-01031: insufficient privileges > hr
grant create session to hong;
grant create table to hong;
revoke create session from hong;
-- νλ‘μ νΈ μ§ν > νλ‘μ νΈμ© κ³μ μμ±
create user team identified by java1234;
grant connect, resource, dba to team; -- hrκ³Ό λΉμ·ν κ³μ μ ν
alter user team account lock; -- μ κΈ
alter user team account unlock;
κ΅μ¬μ κ΅μ‘μ κΈ°λ₯ λΆλΆμ λν μꡬμ¬ν λΆμμ λ§μ μ§ννλ€. κ·Έλ¦¬κ³ μ΄λ€ ν
μ΄λΈμ μ΄λ€ κ΄κ³λ‘ λ§λ€μ§ νμν νμ κ°λ
λͺ¨λΈλ§μ μ§ννλ€.
κ²½ν κΈ°λ° λ©΄μ λλΉνκΈ°.
ex) μ μ₯ νλ‘μμ , μ μ₯ ν¨μλ₯Ό μ§μ μ¨λ³Έ κ²κ³Ό μ¨λ³΄κ³ λ μκ° λ§νκΈ°
ν νλ‘μ νΈμ νλμ© μ¬μ©νκ³ μ΄λμ μ¬μ©νλμ§ μκ³ μκΈ°.
μ΄λ€ κ²½νμ νλμ§ λ¬»μ§ μμλ μ§λ¬Έμ λν λ΅μ κ²½νμ λ§λΆμ΄λ©΄ ν©κ²© νλ₯ μ΄ μ¬λΌκ°λ€.