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