sqlserver 觸發器 insert/update/delete
阿新 • • 發佈:2021-01-16
文章目錄
新建一張資料表用於測試
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[trigger_user](
[name] [nchar](10) NULL,
[age] [nchar](10) NULL
) ON [PRIMARY]
GO
一、insert 觸發器
示例:pandas 是基於NumPy 的一種工具,該工具是為了解決資料分析任務而建立的。
--insert觸發器
if (object_id('trigger_user_insert') is not null)
drop trigger trigger_user_insert
go
create trigger trigger_user_insert
on trigger_user --表名
for insert --插入後觸發
--instead of insert --插入前觸發,使用插入前觸發時,不執行預設插入
as
--開始執行邏輯
declare @name int, @age varchar(20), @temp int;
select @name = name, @age = age from inserted -- inserted 存放了當前插入的值
select @name,@age
go
執行insert 語句後,觸發觸發器,輸出name和age
二、update觸發器
--update觸發器
if (object_id('trigger_user_update') is not null)
drop trigger trigger_user_update
go
create trigger trigger_user_update
on trigger_user --表名
for update
-- instead of update 更新前觸發
as
--開始執行邏輯
select * from trigger_user
declare @name int, @age varchar(20), @temp int;
select @name = name, @age = age from inserted -- inserted 存放了當前更新傳入的值
select @name,@age
go
三、delete觸發器
--delete觸發器
if (object_id('trigger_user_delete') is not null)
drop trigger trigger_user_delete
go
create trigger trigger_user_delete
on trigger_user --表名
for delete
-- instead of update
as
--開始執行邏輯
select * from trigger_user
declare @name int, @age varchar(20), @temp int;
select @name = name, @age = age from deleted -- deleted 存放了當前刪除的條件值
select @name,@age
go
最後將測試表和測試觸發器刪除
if (object_id('trigger_user_insert') is not null)
drop trigger trigger_user_insert
if (object_id('trigger_user_update') is not null)
drop trigger trigger_user_update
if (object_id('trigger_user_delete') is not null)
drop trigger trigger_user_delete
if (object_id('trigger_user') is not null)
drop table trigger_user