添加主从表的数据!
a表里面有两个字段id,name,id是自动增长的
b表里面有三个字段id,name,nid ,id是自动增长的,nid是a表id的外键
现在需要用一个存储过程,插入a、b两表里面的数据
a表只需要插一行数据,b表会插多行数据,并且与a表关联,这个用一条存储过程可以实现吗?
作者: skyqingtian 发布时间: 2011-06-10
作者: KFCU 发布时间: 2011-06-10
SQL code
--一个存储过程里面可以有多条SQL 语句。 insert into a select * from table where id=1--一条语句 insert into b select * from table --多条语句
作者: maco_wang 发布时间: 2011-06-10
SQL code
create procedure pr_insert_aandb @aName nvarchar(20) ,@bNames nvarchar(2000) as SET NOCOUNT ON; SET XACT_ABORT ON; DECLARE @AID INT DECLARE @SQL NVARCHAR(4000) BEGIN TRAN INSERT INTO A(NAME) VALUES(@ANAME) SELECT @AID = SCOPE_IDENTITY () SET @SQL = N'INSERT B(NAME,NID) SELECT ''' + REPLACE(@BNAMES,',',''',@AID UNION ALL SELECT ''') + ''',@AID ' EXEC SP_EXECUTESQL @SQL,N'@AID INT',@AID COMMIT TRAN GO
--没测试
作者: KFCU 发布时间: 2011-06-10
作者: skyqingtian 发布时间: 2011-06-10
作者: asftrhgjhkjlkttttttt 发布时间: 2011-06-10
--可以的, 示例操作如下: --a表 insert a(name) values '张三' --b表 insert b(name,nid) select a.name,SCOPE_IDENTITY() from a where a.id=SCOPE_IDENTITY()
作者: cd731107 发布时间: 2011-06-10
--可以的, 示例操作如下: --加个事务就能保证两个表的数据同步的更新到数据库 begin tran --a表 insert a(name) values '张三' --b表 insert b(name,nid) select a.name,SCOPE_IDENTITY() from a where a.id=SCOPE_IDENTITY() commit
作者: cd731107 发布时间: 2011-06-10
--可以的, 示例操作如下: --加个事务就能保证两个表的数据同步的更新到数据库 begin tran --a表 insert a(name) values '张三' --b表 insert b(name,nid) select a.name,SCOPE_IDENTITY() from a where a.id=SCOPE_IDENTITY() if @@ERROR=0 commit else rollback
作者: cd731107 发布时间: 2011-06-10
作者: skyqingtian 发布时间: 2011-06-10
b表的数据和a表的不一样的!只是有个主外键关联的关系而已!
那根据自己的实际情况修改一下
作者: cd731107 发布时间: 2011-06-10
作者: yes20090314 发布时间: 2011-06-10
begin tran --a表 declare @nid int; insert into a(name) select '李四' --b表 set @nid = SCOPE_IDENTITY(); insert into b(name,nid) select '你的数据',@nid if @@ERROR=0 commit else rollback
作者: abcjun188 发布时间: 2011-06-10