SQL触发器怎么做

悬赏分:20|
RT
我也没用过?给几个例子
sql语句我很熟

其 他 回 答共3条

1楼

语法格式:
create trigger 触发器名
on 表名
for update或delete或insert
as
SQL语句
---------
其实也是一种存储过程,当你执行update或delete或insert语句时,触发器就被执行了,不象存储过程是手动执行的.清楚了吗?
知识库标签: 触发器   |列兵

2楼


都写得很清楚了啊,你可以找一个实例看看
create trigger 触发器名
on 表名
for update或delete或insert '触发动作,就是对表的操作,如更新,删除,插入之类就会触发
as
写SQL(更新,删除,插入)语句,这个你应该会了吧
知识库标签: 触发器   |列兵

3楼


USE [student]
GO
/****** 对象: Trigger [dbo].[sut1] 脚本日期: 02/10/2009 18:16:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--测试的触发器
ALTER trigger [dbo].[sut1]
on [dbo].[stuInfo]
for insert, delete,update
as
declare @cnt int
--判断是不是插入
select @cnt =count(1) from inserted
if @cnt>0
begin
set identity_insert dbo.stuinfo2 on
insert into stuinfo2(sid,sname,ssex,sage,sdata,sphone,spid)
select sid,sname,ssex,sage,sdata,sphone,spid from inserted
set identity_insert dbo.stuinfo2 off
end
--判断是不是删除
select @cnt=count(1) from deleted
if @cnt>0
begin
delete from stuinfo2 where sid in (select sid from deleted)
end
if update(sname)
begin
select sid into #temp from stuinfo where sid in (select sid from deleted)
set identity_insert dbo.stuinfo2 on
insert into stuinfo2(sid,sname,ssex,sage,sdata,sphone,spid)
select sid,sname,ssex,sage,sdata,sphone,spid from stuinfo where sid in (select sid from #temp)
set identity_insert dbo.stuinfo2 off
drop table #temp
end
--触发器分前触发 insert of 与 after
------------------条件
/*有两个表 stuinfo 与 stuinfo2 表结构如下
当对stuinfo 表进行操作时,同时stuinfo2也发生变化
USE [student]
GO
/****** 对象: Table [dbo].[stuInfo] 脚本日期: 02/10/2009 18:17:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[stuInfo](
[sid] [int] IDENTITY(1,1) NOT NULL,
[sname] [nchar](10) NULL,
[ssex] [nchar](2) NULL,
[sage] [int] NULL,
[sdata] [datetime] NULL,
[sphone] [nchar](15) NULL,
[spid] [nchar](10) NULL
) ON [PRIMARY]
*/
知识库标签: 触发器   |列兵

我来回答这个问题

立即登陆回答获取会员积分,提高用户级别
友情链接:
Copyright © 商名网 All Rights Reserved.