如何一次往数据库表中添加多条记录?

AppleHan 2004-04-17 06:00:17
我有1K多条记录,需要一次输入到表中,如果当中出错则事务回滚,只有全部执行正确才都进入数据库,这该用什么实现
...全文
499 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
bzxs 2004-04-18
  • 打赏
  • 举报
回复
你能不能说说你的表格结构,然后帮你看看。举几个例子就行了。
AppleHan 2004-04-18
  • 打赏
  • 举报
回复
up
AppleHan 2004-04-18
  • 打赏
  • 举报
回复
有员工编号,姓名,年月、公积金,养老金,扣电话费等类似的七八项,
每次把全公司的人的电话费导入,如果出错则回滚
AppleHan 2004-04-17
  • 打赏
  • 举报
回复
是啊,那我不可能每次都把每条insert都写出来吧
我感觉应该象存储过程能够传递参数似的,传递记录个数

zjcxc 2004-04-17
  • 打赏
  • 举报
回复
那没问题啊.

你只是记录条数的问题,以不是字段的问题.
AppleHan 2004-04-17
  • 打赏
  • 举报
回复
打个比方吧,就好比一张表放了一个年级学生的各个课程的分数,第一次导入语文,第二次导入数学,但是学生的数量是不定的
不知道我说清楚了没有
zjcxc 2004-04-17
  • 打赏
  • 举报
回复
举例说明
AppleHan 2004-04-17
  • 打赏
  • 举报
回复
谢谢楼上几位
是这样的,我每次需要成批导入,但导入的字段不一样,都在一个表中,也就是说,这次我可能只导入A字段的记录,下次再导入B字段记录,
我以前是写存储过程,在程序中循环,一条条的加,但现在用户要求,如果一条记录导入出错就要求都导不进去,我就只有把所有的写在一个事务中,然后出错就回滚,但是这样的存储过程该怎么写?而且每次导入的记录个数不一定相同
zjcxc 2004-04-17
  • 打赏
  • 举报
回复
SET XACT_ABORT
指定当 Transact-SQL 语句产生运行时错误时,Microsoft® SQL Server™ 是否自动回滚当前事务。

youngby 2004-04-17
  • 打赏
  • 举报
回复
set xact_abort on
begin tran
--下面录入处理
insert .....
insert .....
--录入处理结束
commit tran
set xact_abort off
周江涛 2004-04-17
  • 打赏
  • 举报
回复
跟楼上的学习一下。那个set xact_abort on 是?
zjcxc 2004-04-17
  • 打赏
  • 举报
回复
set xact_abort on
begin tran
--下面录入处理
insert .....
insert .....
--录入处理结束
commit tran
CCEO 2004-04-17
  • 打赏
  • 举报
回复
BEGIN TRANSACTION

insert ...
if @@error<>0
begin
ROLLBACK TRANSACTION
goto theend
end
insert ...
if @@error<>0
begin
ROLLBACK TRANSACTION
goto theend
end
...

COMMIT TRANSACTION

theend:
CCEO 2004-04-17
  • 打赏
  • 举报
回复
事务
BEGIN TRANSACTION

insert ...
if @@error<>0
begin
ROLLBACK TRANSACTION
goto theend
end
COMMIT TRANSACTION

theend:

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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