SQL2008 如何同时插入多个表

yp2800 2011-11-09 01:49:26
--创建学生(Students)表
CREATE TABLE Students(
cStudentsId char(10) NOT NULL,
iStuImage image NULL,
vStuName varchar(20) NOT NULL,
cStuSex char(5) NOT NULL,
sStuAge smallint NULL,
CONSTRAINT constraint_Students PRIMARY KEY(cStudentsId),
CHECK(sStuAge BETWEEN 0 AND 100),
CONSTRAINT chkStuSex CHECK(cStuSex IN ('男','女'))
)
--创建学生用户(StuUsers)表
CREATE TABLE Stuusers(
cStudentsId char(10) NOT NULL,
cStuCode char(10) NOT NULL
)
ALTER TABLE Stuusers
ADD CONSTRAINT fkStuusers FOREIGN KEY (cStudentsId) REFERENCES Students(cStudentsId)
--创建学生在校(StudentsSchool)表
CREATE TABLE StudentsSchool(
cStudentsId char(10) NOT NULL,
dStuEnteTime datetime NOT NULL,
vStuMajor varchar(40) NOT NULL,
dStuFinTime datetime NOT NULL
)
ALTER TABLE StudentsSchool
ADD CONSTRAINT fkStudentsSchool FOREIGN KEY (cStudentsId) REFERENCES Students(cStudentsId)

我想三个表同时插入数据,因为三个表中都有cStudentsId,我想做到三个表一同插入,而不是像下面一样一个表一个表的插入,但是不知道能用什么方法插入,请各位高手指点一二,非常感激。

INSERT Students (cStudentsId,vStuName,cStuSex,sStuAge) VALUES
('2010121001', '张三', '男', '19'),('2010121002', '李三', '男', '19'),
('2010121003', '张四', '男', '22'),('2010121004', '李四', '男', '21'),
('2010121005', '赵艳', '女', '20'),('2010121006', '严子义', '男', '23'),
insert StudentsSchool values
('2010121001', '2006-9-13', '网络工程', '2010-4-25'),
('2010121002', '2006-9-13', '大气', '2010-4-25'),
('2010121003', '2007-9-13', '应用物理', '2011-4-25'),
('2010121004', '2008-9-13', '电子信息工程', '2013-4-25'),
('2010121005', '2005-9-13', '土木工程', '2010-4-25'),
('2010121006', '2007-9-13', '英语', '2010-4-25'),
INSERT Stuusers VALUES
('2010121001', '0000000000'),('2010121002', '0000000000'),
('2010121003', '0000000000'),('2010121004', '0000000000'),
('2010121005', '0000000000'),('2010121006', '0000000000'),
...全文
460 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq386707112 2014-03-29
  • 打赏
  • 举报
回复
引用 9 楼 Yp2800 的回复:
非常感谢各位问题已经解决,谢谢……
怎么解决的,告诉我一下好么,我也要用…………
yp2800 2011-11-11
  • 打赏
  • 举报
回复
非常感谢各位问题已经解决,谢谢……
中国风 2011-11-10
  • 打赏
  • 举报
回复
可用存储过程实现,新增时调用存储过程

表:T1
ID
表:T2
ID T1_ID

Create proc P1(@ID int,@ID2 int)
as
insert T1 values(@ID)
insert T2 values(@ID2,@ID)
go
exec p1 1,2
yp2800 2011-11-10
  • 打赏
  • 举报
回复
可不可以详细一点啊,我不懂哟,谢谢……
-晴天 2011-11-10
  • 打赏
  • 举报
回复
用一个事务来执行,基本上等价于一条语句:
begin transaction t1
INSERT Students (cStudentsId,vStuName,cStuSex,sStuAge) VALUES
('2010121001', '张三', '男', '19'),('2010121002', '李三', '男', '19'),
('2010121003', '张四', '男', '22'),('2010121004', '李四', '男', '21'),
('2010121005', '赵艳', '女', '20'),('2010121006', '严子义', '男', '23')
insert StudentsSchool values
('2010121001', '2006-9-13', '网络工程', '2010-4-25'),
('2010121002', '2006-9-13', '大气', '2010-4-25'),
('2010121003', '2007-9-13', '应用物理', '2011-4-25'),
('2010121004', '2008-9-13', '电子信息工程', '2013-4-25'),
('2010121005', '2005-9-13', '土木工程', '2010-4-25'),
('2010121006', '2007-9-13', '英语', '2010-4-25')
INSERT Stuusers VALUES
('2010121001', '0000000000'),('2010121002', '0000000000'),
('2010121003', '0000000000'),('2010121004', '0000000000'),
('2010121005', '0000000000'),('2010121006', '0000000000')
commit t1
dawugui 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yp2800 的回复:]
可不可以详细一点啊,我不懂哟,谢谢……
[/Quote]楼上roy_88已经告诉你了,把所有的内容写到存储过程中去.
大致为:
create procedure my_proc
as
begin
INSERT Students (cStudentsId,vStuName,cStuSex,sStuAge) VALUES
('2010121001', '张三', '男', '19'),('2010121002', '李三', '男', '19'),
('2010121003', '张四', '男', '22'),('2010121004', '李四', '男', '21'),
('2010121005', '赵艳', '女', '20'),('2010121006', '严子义', '男', '23')
insert StudentsSchool values
('2010121001', '2006-9-13', '网络工程', '2010-4-25'),
('2010121002', '2006-9-13', '大气', '2010-4-25'),
('2010121003', '2007-9-13', '应用物理', '2011-4-25'),
('2010121004', '2008-9-13', '电子信息工程', '2013-4-25'),
('2010121005', '2005-9-13', '土木工程', '2010-4-25'),
('2010121006', '2007-9-13', '英语', '2010-4-25')
INSERT Stuusers VALUES
('2010121001', '0000000000'),('2010121002', '0000000000'),
('2010121003', '0000000000'),('2010121004', '0000000000'),
('2010121005', '0000000000'),('2010121006', '0000000000')

end
sunboylyl 2011-11-09
  • 打赏
  • 举报
回复
你插入的语句 应该 在 应用程序里面实现的吧?!
还是 用一下 SqlBulkCopy 吧,三个表一起插入是不行的,有
外键,注意一下 顺序,祝好运!
yp2800 2011-11-09
  • 打赏
  • 举报
回复
那么又怎么写在一个事务里面呢
怎么写呢?谢谢指点……
--小F-- 2011-11-09
  • 打赏
  • 举报
回复
这。。。把三个INSERT 语句写在同一个事务里面

不过实质上还是分3次插入。
-晴天 2011-11-09
  • 打赏
  • 举报
回复
木有办法,只能一个一个插.

22,302

社区成员

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

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