同时多个表插入数据

feng12345567 2010-09-01 09:47:29
有一个商品表,字段有priductId(主键),priductName,productCode,等。商品规格表(priductId,Specifications(规格)),商品描述表(priductId,Description(描述)),等等表。
现在插入一条商品信息,也同事要设置商品规格和商品描述表的数据。
插一条商品信息同时插入其他表的信息,要写一个存储过程。
思路我就想出来,就是不会写,思路:插入商品信息,把插入的id拿出来再插入其他表,用事务来写,请大家指教,谢谢
...全文
198 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mozhifeng110 2010-11-20
  • 打赏
  • 举报
回复
BEGIN TRY
declare @ProductId int
begin tran --开始事务
-- 插入商品信息
Insert Tab1(productName,productCode)
Values(@productName,@productCode)
-- 插入商品规格
select @productId=select @@IDENTITY from Tab1
Insert Tab2(productId,Specifications)
Values(@productId, @Specifications)
--其他语句
。。。
commit tran --提交事务
return 1
END TRY
BEGIN CATCH
rollback tran
return 0
END CATCH
rj0801zxh 2010-10-21
  • 打赏
  • 举报
回复
谢谢你啦!解决了我的难题哦!
equn93 2010-09-03
  • 打赏
  • 举报
回复
自增列的话像树哥说的
可以使用@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 中的一个来获取刚插入的id

BEGIN TRY
declare @ProductId int
begin tran --开始事务
-- 插入商品信息
Insert Tab1(productName,productCode)
Values(@productName,@productCode)
-- 插入商品规格
select @productId=@@IDENTITY
Insert Tab2(productId,Specifications)
Values(@productId, @Specifications)
--其他语句
。。。
commit tran --提交事务
return 1
END TRY
BEGIN CATCH
rollback tran
return 0
END CATCH


yoyo_ 2010-09-02
  • 打赏
  • 举报
回复
使用事务,在同一个事务中执行你上面的多条语句,有一条没执行成功,就回滚!
feng12345567 2010-09-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 equn93 的回复:]
可以用存储过程:

SQL code

BEGIN TRY
begin tran --开始事务
-- 插入商品信息
Insert Tab1(priductId,priductName,productCode)
Values(@priductId,@priductName,@productCode)
-- 插入商品规格
Insert Tab2(prid……
[/Quote]
如果商品信息表 ProductId 不是自增列还可以,
但productId是自增列,不能插入,在插入商品信息数据时,获取插入的Id然后再插入商品规格表,请高手指点指点。
weirihainihao 2010-09-02
  • 打赏
  • 举报
回复
很好学习。
equn93 2010-09-02
  • 打赏
  • 举报
回复
可以用存储过程:

BEGIN TRY
begin tran --开始事务
-- 插入商品信息
Insert Tab1(priductId,priductName,productCode)
Values(@priductId,@priductName,@productCode)
-- 插入商品规格
Insert Tab2(priductId,Specifications)
Values(@priductId,@Specifications)
--其他语句
。。。
commit tran --提交事务
return 1
END TRY
BEGIN CATCH
rollback tran
return 0
END CATCH
聪明糊涂蛋 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hao1hao2hao3 的回复:]
用触发器吧!
在商品表上建触发器。
[/Quote]
学习
feng12345567 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 josy 的回复:]

如果priductid不是自增列,按顺序插入即可

如果是子增列,可以使用@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 中的一个来获取刚插入的id
他们之间的区别可以参考 http://msdn.microsoft.com/zh-cn/library/ms187342.aspx
[/Quote]
使用事务来完成,如果有一条数据没插入,那全部都要取消插入。
feng12345567 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 josy 的回复:]

如果priductid不是自增列,按顺序插入即可

如果是子增列,可以使用@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 中的一个来获取刚插入的id
他们之间的区别可以参考 http://msdn.microsoft.com/zh-cn/library/ms187342.aspx
[/Quote]

用存储过程啊
feng12345567 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hao1hao2hao3 的回复:]

用触发器吧!
在商品表上建触发器。
[/Quote]
我知道,但也要给个例子给我啊·
百年树人 2010-09-01
  • 打赏
  • 举报
回复
如果priductid不是自增列,按顺序插入即可

如果是子增列,可以使用@@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 中的一个来获取刚插入的id
他们之间的区别可以参考 http://msdn.microsoft.com/zh-cn/library/ms187342.aspx
hao1hao2hao3 2010-09-01
  • 打赏
  • 举报
回复
用触发器吧!
在商品表上建触发器。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧