トリガー
トリガーの概要: トリガーは特別なストアド プロシージャであり、その実行はプログラムによって呼び出されたり、手動で開始されたりするのではなく、テーブルの操作 (挿入、削除、更新) によってトリガーされます。トリガーは、データ整合性の制約とビジネス ルールを強化するためによく使用されます。私の考えでは、トリガーは実際にはイベントであり、C# と同じように、ボタンをクリックすると対応する操作がトリガーされます。
トリガーの分類:
(1) DML (データ操作言語) トリガー: データベースで DML イベントが発生したときにトリガーが有効になることを意味します。 DML イベントは、テーブルまたはビュー内のデータを変更する挿入、更新、および削除ステートメントを指します。
(2) DDL (データ定義言語) トリガー: サーバーまたはデータベースで DDL イベントが発生し、テーブルまたはインデックス内の create、alter、drop ステートメントを参照するときに有効になることを意味します。 ) ログイントリガー: ユーザーが SQL SERVER インスタンスにログインしてセッションを確立するときにトリガーされます
そのうち、DML トリガーが最もよく使用され、DML の方法に応じて次の 2 つの状況に分けられますトリガーがトリガーされる:
(2) INSTEAD OF トリガー: INSERT、UPDATE、および DELETE ステートメントの操作を実行する前に、トリガー自体によって定義された操作を実行します。 INSTEAD OF トリガーはビューで定義できます。
INSERTED と DELETED
CREATE TRIGGER 触发器名称 ON 表名 { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ DELETE ] [ , ] [UPDATE ] } AS SQL 语句 [ ... n ]
DROP TRIGGER 触发器名 [ , ... n ]
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
Create trigger tri_Updates on s for update as print 'the table s was updated'
CREATE TRIGGER tri_del_grade ON SC FOR DELETE AS IF EXISTS(SELECT * FROM DELETED WHERE Grade < 60) ROLLBACK