トリガー
トリガーの概要: トリガーは特別なストアド プロシージャであり、その実行はプログラムによって呼び出されたり、手動で開始されたりするのではなく、テーブルの操作 (挿入、削除、更新) によってトリガーされます。トリガーは、データ整合性の制約とビジネス ルールを強化するためによく使用されます。私の考えでは、トリガーは実際にはイベントであり、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 ]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 transactionSC テーブル内の不合格の成績を持つ生徒の記録を削除することは禁止されています:
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