SQL中,如何创建一个有条件的触发器 10
题目是这样的,创建一insert触发器,,要求插入学生表中的院系必须是‘信息学院’否则提示:插入学生院系为信息学院...
题目是这样的,创建一insert触发器,,要求插入学生表中的院系必须是‘信息学院’否则提示:插入学生院系为信息学院
展开
3个回答
2015-11-16 · 知道合伙人软件行家
关注
展开全部
create table 学生表 (姓名 varchar(20),院系 varchar(20),primary key(姓名))
go
create trigger tr_学生表
on 学生表 instead of insert
as
begin
if (select 院系 from inserted)<>'信息学院'
raiserror('插入学生院系应为信息学院',16,1)
else
insert into 学生表 select * from inserted
end
go
insert into 学生表 values ('1','1')
楼上的代码也不错,但是有个缺点,就是如果用代码一次输入多条记录的话,在中间如果有不满足条件的记录的话,那么从这条记录以后的数据都会回滚,因为用到了rollback tran事务处理,如果用instead of触发器的话可以完全避免这个问题
go
create trigger tr_学生表
on 学生表 instead of insert
as
begin
if (select 院系 from inserted)<>'信息学院'
raiserror('插入学生院系应为信息学院',16,1)
else
insert into 学生表 select * from inserted
end
go
insert into 学生表 values ('1','1')
楼上的代码也不错,但是有个缺点,就是如果用代码一次输入多条记录的话,在中间如果有不满足条件的记录的话,那么从这条记录以后的数据都会回滚,因为用到了rollback tran事务处理,如果用instead of触发器的话可以完全避免这个问题
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
create table 学生表 (姓名 varchar(20),院系 varchar(20),primary key(姓名))
go
create trigger tr_学生表
on 学生表 after insert
as
begin
if not exists(select 1 from inserted where 院系='信息学院')
begin
rollback tran
raiserror('插入学生院系应为信息学院',16,1)
end
end
--呵呵,抄的上面仁兄的回答,改了一下。
go
create trigger tr_学生表
on 学生表 after insert
as
begin
if not exists(select 1 from inserted where 院系='信息学院')
begin
rollback tran
raiserror('插入学生院系应为信息学院',16,1)
end
end
--呵呵,抄的上面仁兄的回答,改了一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |