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

黄舟
リリース: 2017-01-18 11:08:39
オリジナル
1592 人が閲覧しました

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) に注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート