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

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