sql server2008 你,怎么用存储过程向多个表中添加记录啊(三个表以上),求助各位大神,麻烦帮帮忙了
其中表一tab1字段有idnvarchar(20)主键,sexbit,ageint表二tab2字段有idnvarchar(20)是表二的主键也是表一的外键,address...
其中表一tab1字段有id nvarchar(20)主键 ,sex bit,age int
表二tab2字段有 id nvarchar(20)是表二的主键也是表一的外键,address int,phone nvarchar(11)
表三tab3字段有id nvarchar(20)是表三的主键也是表一的外键,post nvcarchar(16),qq nvcarchar(12)
上面三个表是个列子,请各位用这个例子来实现一下,是用存储过程的哦 展开
表二tab2字段有 id nvarchar(20)是表二的主键也是表一的外键,address int,phone nvarchar(11)
表三tab3字段有id nvarchar(20)是表三的主键也是表一的外键,post nvcarchar(16),qq nvcarchar(12)
上面三个表是个列子,请各位用这个例子来实现一下,是用存储过程的哦 展开
2个回答
展开全部
create proc p_test
(
@id nvarchar(20),@sex bit,@age int
@address int,@phone nvarchar(11)
@post nvcarchar(16),@qq nvcarchar(12)
)
as
begin try
begin tran
insert into tb1 select @id,@sex,@age
insert into tb2 select @id,@address,@phone
insert into tb3 select @id,@post,@qq
commit
end try
begin catch
rollback
print '异常回滚'
end catch
(
@id nvarchar(20),@sex bit,@age int
@address int,@phone nvarchar(11)
@post nvcarchar(16),@qq nvcarchar(12)
)
as
begin try
begin tran
insert into tb1 select @id,@sex,@age
insert into tb2 select @id,@address,@phone
insert into tb3 select @id,@post,@qq
commit
end try
begin catch
rollback
print '异常回滚'
end catch
更多追问追答
追问
可以帮我注释一下吗,谢谢
追答
没什么好注释的啊
就是加了个try catch语句块,还有事务语句tran,用来保持事务的一致性
如果三条语句成功的话就commit提交事务,如果其中有一条失败就rollback回滚事务
2013-02-21
展开全部
主要是事务,成功则全部成功,有一个失败则之前做的操作回滚
追问
现在的问题是我在vs里调用的时候就出现
INSERT 语句与 FOREIGN KEY 约束"FK_dbo.tb2_tb1"冲突。该冲突发生于数据库"tb",表"dbo.tb1",
column 'id'。
语句已终止。
但是我在数据库中把那3条添加语句拿出来执行时没有问题的,不知道是怎么回事?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询