ホームページ  >  記事  >  データベース  >  Oracleのトリガーとmysqlのトリガーを使用した場合の比較

Oracleのトリガーとmysqlのトリガーを使用した場合の比較

黄舟
黄舟オリジナル
2017-01-18 11:08:391557ブラウズ

Mysql リレーショナル データベース管理システム

MySQL は、スウェーデンの MySQL AB 社によって開発された、オープンソースの小規模リレーショナル データベース管理システムです。 MySQL は、インターネット上の小規模および中規模の Web サイトで広く使用されています。 MySQL は、サイズが小さく、速度が速く、総所有コストが低く、特にオープンソースの特性により、Web サイトの総所有コストを削減するために、多くの中小規模の Web サイトが Web サイト データベースとして 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 の中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。