--トリガーを挿入
作成トリガー tri_insert
on Student --挿入用に変更されるテーブルの名前
--データをテーブルに挿入するときにトリガーされます
as
declare @student_id char(10) --定義変数
SELECT @student_id=s.student_id from — クエリされた指定されたフィールドの値を変数に割り当てます
student の内部結合が i
on s.student_id=i.student_id
if @student_id='0000000001'
begin
Raiserror( '学生番号 1 は挿入できません!',16,8)
rollback tran
end
go
--更新トリガー
学生のトリガー tri_update
を作成します —更新用に変更されるテーブルの名前
—テーブルへ データの一部が変更されたときにトリガーされます
as
if update(student_id)
begin
Raiserror('学生 ID は変更できません!',16,8)
rollback tran
end
go
--deleteトリガー
作成トリガー tri_delete
on Student -- 削除するために変更されるテーブルの名前
-- データがテーブルから削除されるときにトリガー
@student_id varchar(10) を宣言
select @student_id=student_id from selected
if @student_id='admin'
begin
Raiserror('error',16,8)
rollback tran
end
更新操作は、最初に行レコードを削除し、次に挿入するという 2 つの操作を実行すると考えることができます。このため、更新操作は実際には削除されたテーブルと挿入されたテーブルに対して行われるため、更新されたテーブルが存在しない場合があります。 2 つのテーブルには主キーと外部キーの関係があります。メイン テーブルのデータを削除する場合、この時点でトリガーを使用しても、サブテーブルに関連するデータも削除されます。 , このトリガーはテーブルを削除した後にトリガーされるため、この時点では直接終了され、「主キーと外部キーの関係があるため削除できません」というメッセージが表示されます。このような削除トリガーはすべて無効です。