日期:2014-05-17  浏览次数:20663 次

sql中怎样一次insert两个表
有两个表,表A主键id自增,表B外键id,向表A添加一条信息,我想让表B(ID)也自动添加表A自增的(ID),怎么可以做到,求代码,详细点,谢谢!
------最佳解决方案--------------------
用触发器.
create table t1(id int identity(1,1),val varchar(10))
create table t2(t1id int)
go
create trigger setsumidtot2
on t1
for insert
as
insert into t2 select id from inserted
go
insert into t1(val) values('abc')
select * from t2
/*
t1id
-----------
1

(1 行受影响)
*/
go
drop table t1,t2

------其他解决方案--------------------
先插入B表,获取数据,再插入A表。你的表结构都不给出来怎么给语句
------其他解决方案--------------------
表user_base 字段user_base_id(主键、自增)、user_base_pwd,
表user_info 字段user_info_id(外键、对应user_base_id)假设这么多,
我要象user_base插入一条数据如:(1,123),我想要user_info也自动插入user_info_id等于1,
怎么做?
------其他解决方案--------------------
insert into user_base_id values(1,'123')
insert into use_info_id(user_info_id) values(@@identity)
------其他解决方案--------------------
还是不行啊  我说错了一个信息,就是user_base_id是自增的,
还有就是insert into user_base_id values('123'),应该是insert into user_base(指定表)第二个也一样
------其他解决方案--------------------
我改了一点,但是我在第二个表(user_info)插入多个信息的时候会报错(消息 110,级别 15,状态 1,第 2 行
INSERT 语句中列的数目小于 VALUES 子句中指定的值的数目。VALUES 子句中值的数目必须与 INSERT 语句中指定的列的数目匹配。
)  我想问哈这是什么原因 
------其他解决方案--------------------
insert into a(a,b,c) values(a,b,c)要用这样的格式,插入的列要一一对应,自增列不要插入
------其他解决方案--------------------
哦哦 知道了  在请问一下把他写成存储过程或触发器怎么写
------其他解决方案--------------------
create proc xxx 
(
@a 类型,
@b 类型
这里按这个格式,把你要写入的值和类型都一一天上
)
as
这里把你弄好的insert语句写进去

然后就完事了。触发器不怎么喜欢用,所以语法不熟
------其他解决方案--------------------
你这什么意思啊- -一次是说一条sql搞定还是想说一个批处理搞定啊
------其他解决方案--------------------
引用:
create proc xxx 
(
@a 类型,
@b 类型
这里按这个格式,把你要写入的值和类型都一一天上
)
as
这里把你弄好的insert语句写进去

然后就完事了。触发器不怎么喜欢用,所以语法不熟

++
------其他解决方案--------------------
用触发器就可以了
------其他解决方案--------------------
引用:
你这什么意思啊- -一次是说一条sql搞定还是想说一个批处理搞定啊
一个存储过程就是执行一个批啊。你这功底也太》。。。。
------其他解决方案--------------------
用触发器吧,10楼的做法应该可行
create table t1(id int identity(1,1),val varchar(10))
create table t2(t1id int)
go
create trigger setsumidtot2
on t1
for insert
as
insert into t2 select id from inserted
go
insert into t1(val) values('abc')
select * from t2
------其他解决方案--------------------