検索
ホームページphp教程PHP开发SQLにおけるトリガーの詳しい説明

SQLにおけるトリガーの詳しい説明

Dec 14, 2016 pm 04:14 PM
SQLトリガー

トリガー

トリガーの概要: トリガーは特別なストアド プロシージャであり、その実行はプログラムによって呼び出されたり、手動で開始されたりするのではなく、テーブルの操作 (挿入、削除、更新) によってトリガーされます。トリガーは、データ整合性の制約とビジネス ルールを強化するためによく使用されます。私の考えでは、トリガーは実際にはイベントであり、C# と同じように、ボタンをクリックすると対応する操作がトリガーされます。


トリガーの分類:

(1) DML (データ操作言語) トリガー: データベースで DML イベントが発生したときにトリガーが有効になることを意味します。 DML イベントは、テーブルまたはビュー内のデータを変更する挿入、更新、および削除ステートメントを指します。

(2) DDL (データ定義言語) トリガー: サーバーまたはデータベースで DDL イベントが発生し、テーブルまたはインデックス内の create、alter、drop ステートメントを参照するときに有効になることを意味します。 ) ログイントリガー: ユーザーが SQL SERVER インスタンスにログインしてセッションを確立するときにトリガーされます



そのうち、DML トリガーが最もよく使用され、DML の方法に応じて次の 2 つの状況に分けられますトリガーがトリガーされる:

(1) AFTER トリガー: INSERT、UPDATE、および DELETE ステートメントの操作を実行した後にトリガー操作を実行します。エラーが発生した場合、Rollback Transaction ステートメントは主に変更の記録後の処理またはチェックに使用されます。

(2) INSTEAD OF トリガー: INSERT、UPDATE、および DELETE ステートメントの操作を実行する前に、トリガー自体によって定義された操作を実行します。 INSTEAD OF トリガーはビューで定義できます。


INSERTED と DELETED

SQL SERVER 2008 では、DML トリガーの実装は 2 つの論理テーブル DELETED と INSERTED を使用し、データベース サーバーのメモリに構築されます。 DELETED テーブルと INSERED テーブルの構造は、トリガーが実行されると自動的に削除されます。INSERED テーブルは次の目的で使用されます。たとえば、データを挿入すると、そのレコードは INSERTED テーブルに挿入されます。DELETED テーブルは、データベース内に insert、update、delete ステートメントがある場合、これら 2 つの一時メモリ常駐テーブルを使用して、特定のステートメントの効果をテストできます。利点と欠点:

トリガーは、データベース内の関連テーブルを介してカスケード変更を実装でき、CHECK 制約で定義された制約よりも複雑な制約を強制できます。たとえば、トリガーは別のテーブルで SELECT を使用して、挿入または更新されたデータを比較したり、データ変更前後のテーブルの状態に基づいて対策を講じたりすることもできます (テーブル内の複数の同様のトリガー)。 、UPDATE、または DELETE) を使用すると、同じ変更ステートメントに応じて複数の異なる応答を取ることができます。

同時に、トリガーは強力で、多くの複雑な機能を簡単かつ確実に実装できますが、なぜ注意して使用する必要があるのでしょうか?トリガーが多すぎると、データベースとアプリケーションの保守が困難になります。同時に、トリガーに過度に依存すると、必然的にデータベースの構造に影響が生じ、保守手順が複雑になります。文法

トリガーの作成

CREATE TRIGGER 触发器名称  
ON 表名  
{ FOR | AFTER | INSTEAD OF }   
{ [ INSERT ] [ , ] [ DELETE ] [ , ]   
   [UPDATE ] }  
AS   
  SQL 语句 [ ... n ]

トリガーの削除:

DROP TRIGGER 触发器名 [ , ... n ]
E
トリガーの変更:

ALTER TRIGGER 触发器名称  
ON 表名  
{ FOR | AFTER | INSTEAD OF }   
{ [ INSERT ] [ , ] [ DELETE ] [ , ]   
   [UPDATE ] }  
AS   
  SQL 语句 [ ... n ]

開くと無効にする:

disable trigger trigDB on database --禁用触发器  
enable trigger trigDB on database --开启触发器

リマインダーと保護:

Rreee

S テーブルの UPDATE トリガー:

print '删除了触发器***'   
raiserror('数据一致性验证',16,1)  
rollback transaction

SC テーブル内の不合格の成績を持つ生徒の記録を削除することは禁止されています:

Create trigger tri_Updates  
on s  
for update   
as   
print 'the table s was updated'

SC テーブル内の不合格の生徒の成績を合格に変更することは禁止されています:

CREATE TRIGGER tri_del_grade  
  ON SC FOR DELETE  
  AS  
    IF EXISTS(SELECT * FROM DELETED      
          WHERE Grade < 60)  
      ROLLBACK

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール