>  기사  >  데이터 베이스  >  Oracle의 트리거 사용과 mysql의 트리거 사용 비교

Oracle의 트리거 사용과 mysql의 트리거 사용 비교

黄舟
黄舟원래의
2017-01-18 11:08:391551검색

Mysql 관계형 데이터베이스 관리 시스템

MySQL은 스웨덴 MySQL AB 회사에서 개발한 오픈 소스 소규모 관계형 데이터베이스 관리 시스템입니다. MySQL은 인터넷상의 중소규모 웹사이트에서 널리 사용되고 있습니다. 작은 크기, 빠른 속도, 낮은 총 소유 비용, 특히 오픈 소스의 특성으로 인해 많은 중소 웹 사이트에서는 웹 사이트 총 소유 비용을 줄이기 위해 MySQL을 웹 사이트 데이터베이스로 선택합니다.


이 글에서는 주로 Oracle의 트리거 사용과 mysql의 트리거 사용 사례를 비교하여 소개하고 있으며, 필요한 친구들에게 아주 자세하게 소개하고 있습니다. 참고로

1. 트리거

1. 트리거는 데이터베이스에 독립된 개체로 저장되며,

2. 트리거는 호출할 필요가 없으며, 이벤트가 작업을 트리거합니다

3. 트리거는 매개변수를 받을 수 없습니다

-- 트리거 애플리케이션

예: Xiaonei.com, Kaixin.com, facebook, 로그를 게시하고 친구에게 자동으로 알리는 것은 실제로 로그를 추가한 다음 테이블에 항목을 쓸 때 시작됩니다.

-- 트리거는 매우 효율적입니다.

예: 포럼 게시물의 경우 게시물이 삽입될 때마다 포럼 테이블의 마지막 게시 시간과 총 게시물 수 필드를 동기화하려고 합니다. 이때 트리거를 사용하는 것이 매우 효율적입니다.

2. Oracle은 PL/SQL을 사용하여 트리거를 작성합니다

1.--PL/SQL에서 트리거를 생성하기 위한 일반 구문

create [or replace] trigger trigger_name
{before | after}
{insert | delete | update [of column[,column ... ]]} on table_name
[for each row]
[where condition]
--trigger_body;
begin 
end;

2.--연습

--问题3.使用:old 和 :new 操作符
create or replace trigger tri_update
after
update on employees
for each row 
begin
  dbms_output.put_line('更新前:'||:old.salary||' 更新后:'||:new.salary);
end;
--问题2.编写一个触发器,在向 emp 表中插入记录时 打印'hello'
create or replace trigger tri_update
after
insert on emp
begin
  dbms_output.put_line('ok');
end;
--问题1.一个helloworld级别的触发器
--创建一个触发器,在更新employees表的时候触发
create or replace trigger tri_update
after
update on employees
for each row --想在最后执行完打印一个ok,把这句话去掉
begin
  dbms_output.put_line('ok');
end;
--执行
update employees
set salary = salary+1
where department_id = 80

3. MySql에서 트리거 사용

--假设有两张表 board 和 article
create table board(
  id int primary key auto_increment,
  name varchar(50),
  articleCount int
);
create table article(
  id int primary key auto_increment,
  title varchar(50),
  bid int references board(id)
);
--创建一个触发器
delimiter $$
create trigger insertArticle_trigger 
after insert on article 
for each row
begin
  update board set articleCount=articleCount+1
where id = new.bid;
end;
$$
delimiter ;
--当我们对article表执行插入操作的是后就会触发这个触发器
insert into board values(null,'test_boardname',0);
insert into article values(null,'test_title',1);
--执行完这条插入语句后,board表中的articleCount字段值回+1;这个操作由触发器完成。

위는 Oracle에서 트리거를 사용하는 경우와 mysql에서 트리거를 사용하는 경우를 비교한 것입니다. 자세한 내용은 PHP 중국어 웹사이트( www.php.cn)!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:mysql 문자셋 처리다음 기사:mysql 문자셋 처리