注册 登录
编程论坛 SQL Server论坛

请教一个多表插入问题

joerson 发布于 2006-12-07 22:56, 751 次点击

我想做的是:
当我在程序里在student表插入stu_id时,表score也随之插入一个stu_id
网上搜索了一下,讲是用触发器,但是确实不动触发器该怎么写..
谢谢哪位大大帮忙写一个.

7 回复
#2
angeloc2006-12-07 23:42
不用触发器也可以,自己写两个插入不就可以了。
#3
joerson2006-12-08 00:07

多谢angeloc的指点,但是这个办法我之前试过,结果却是score表插入的是多行,插入的是4行有时候是3行,或者5行,而不是我想要的1行......
之前的修改是将我调用的存储过程添加一个Inserte into score:
CREATE procedure addstu
(
@stu_id int,
@name char (20),
@class char (20),
@age int,
@sex char (10),
@homeaddress char(40),
@hometel char (40)
)
as
insert into student
(stu_id,name,class,age,sex,homeaddress,hometel)

values (@stu_id,@name,@class,@age,@sex,@homeaddress,@hometel)
insert into score (stu_id)
values (@stu_id)
GO
绿色的就是我添加的部分,具体问题出在哪我搞不懂...
所以才想到要用触发器进行插入.

[此贴子已经被作者于2006-12-8 11:07:39编辑过]

#4
miaobing20082006-12-08 09:25

用事務把兩條SQL包起來就可以了,不用觸發器完全可以啊!

#5
liu0982006-12-09 11:29
不知道你程序如果调用的这个存储过程!往student表插入一条stu_id时,表score会插入三条stu_id ?这样的话你就查看代码哪写的有问题了
#6
volte2006-12-09 15:38
不可能的,除非你的存储过程调用了多次

这个就是你的表结构设计的不太好,

表结构美设计唯一索引!!

#7
hanbingchong2006-12-10 08:55

能不能给一个例子呀

#8
hanbingchong2006-12-10 08:57
我也写了一个,和他的错误一样,能不能帮我看看呀
use sfyz
go
alter trigger studup on student
for insert,update
as
declare @ss char(11)
begin tran
if(select 指纹 from inserted) is not null
begin
set @ss=(select distinct(学号) from inserted)
insert into yanz(学号) values(@ss)
end
commit
1