日期:2014-05-16  浏览次数:20555 次

SQL2008 如何同时插入多个表
--创建学生(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'),

------解决方案--------------------
木有办法,只能一个一个插.
------解决方案--------------------
这。。。把三个INSERT 语句写在同一个事务里面

不过实质上还是分3次插入。
------解决方案--------------------
  你插入的语句 应该 在 应用程序里面实现的吧?!
  还是 用一下 SqlBulkCopy 吧,三个表一起插入是不行的,有
 外键,注意一下 顺序,祝好运!
------解决方案--------------------
可用存储过程实现,新增时调用存储过程 

表: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

------解决方案--------------------
引用:
可不可以详细一点啊,我不懂哟,谢谢……
楼上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',&nb