| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 431 人关注过本帖
标题:关于触发器和存储过程的问题,新手求指点~!
取消只看楼主 加入收藏
sven0611
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-12-21
结帖率:0
收藏
已结贴  问题点数:20 回复次数:0 
关于触发器和存储过程的问题,新手求指点~!
create database stu
use stu
drop table info
drop table success
create table info--学生信息表
(
  stuID int identity(1,1) primary key not null,
  stuname char(20) not null,
  stuage int not null,
)
go
create table success--课程成绩表
(
  stuID int not null,
  studis char(20) not null,
  stfen int not null,
  foreign key (stuID) references info(stuID)
)
go
select * from info --select * from stu_success
select * from success

insert info values ('张三','17')
insert info values ('李四','16')
insert info values ('王五','16')

insert success values ('1','语文','90')
insert success values ('1','数学','90')
insert success values ('1','英语','90')
insert success values ('1','理综','120')
insert success values ('2','语文','90')
select stuname from info

drop procedure stuinser/*删除存储过程*/

create procedure stuinser/*新建存储过程*/
as
select i.stuID,stuname,studis,stfen
from info i inner join success s
on i.stuID = s.stuID

drop trigger stuinsert/*删除触发器*/

create trigger stuinsert/*新建触发器*/
on success for insert
as
declare @msg varchar(50)
--select *from inserted
/*select @msg = stu_dis*/
EXEC stuinser
代码有点乱,我主要是想熟悉一下触发器和存储过程,现在的问题是这样的,每次对课程成绩表进行数据插入操作的时候,都会执行一次触发器stuinsert,然后触发器stuinsert就会调用存储过程stuinser,但是现在insert success values ('1','语文','90')这样的语句可以重复很多次,就是说同一个人,在同一门课上可以有很多不同的成绩,这显然是不对的。能不能在执行触发器的时候,验证插入的信息是否已经存在,如果存在(就是已经有一条('1','语文','90')的数据,然后插入数据是('1','语文','x'))就回到数据插入之前的状态。还有弱弱的问一句,SQL的触发器和存储过程是不是就相当于java的事件和方法
搜索更多相关主题的帖子: 触发器 成绩表 null 
2011-06-17 12:49
快速回复:关于触发器和存储过程的问题,新手求指点~!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017363 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved