[求助贴] 关于一条SQL添加到两个不同的表
表结构.
table1
StuId,BodyID,Gender,Name,...10多个字段
table2
StuId,Pwd,Name 3个字段
我现在想用一条SQL,同时把一条数据添加到这两个数据表中.
只有两个要求.
1、table2 的 StuID=table1.StuId(同时添加的)
2、Name 的 Name = table1.Name(也是同时添加)
我写的 SQL:
- SQL code
declare @Name nvarchar(50) ='aclie', @Birthday nvarchar(50) ='2011-1-1', @StaData nvarchar(50) = '2011-1-1', @Gender nvarchar(50) ='男', @Nation nvarchar(50)='维吾尔族', @BodyID nvarchar(50)='123456789123456789'insert into Stu_info (Name,Birthday,StaData,Gender,Nation,BodyID) values (@Name,@Birthday,@StaData,@Gender,@BodyID) ;insert into StuAcct (SName,SPwd,StuId) select StuID,Name,RIGHT(BodyID,6) StuAcct from Stu_info where BodyID=@BodyID
我想用 select into 同时去添加,但是最后发现还是不行.
我知道这个语句肯定是有错的,求大牛给点思路.
[解决办法]
[解决办法]
用output
[解决办法]
- SQL code
触发器
[解决办法]
这个可以做个判断
如果条件符合同时添加
[解决办法]
declare @Name nvarchar(50)
declare @Birthday nvarchar(50)
declare @StaData nvarchar(50)
declare @Gender nvarchar(50)
declare @Nation nvarchar(50
declare @BodyID nvarchar(50
set @Name ='aclie'
set @Birthday ='2011-1-1'
set @StaData = '2011-1-1'
set @Gender ='男'
set @Nation ='维吾尔族'
set @BodyID ='123456789123456789'
insert into Stu_info (Name,Birthday,StaData,Gender,Nation,BodyID) values (@Name,@Birthday,@StaData,@Gender,@Nation,@BodyID) ;
insert into StuAcct (SName,SPwd,StuId) select StuID,Name,RIGHT(BodyID,6) from Stu_info where BodyID=@BodyID
[解决办法]
呼叫水哥
[解决办法]
是不是写个事务处理,tabel1 insert成功了然后提取第一个的信息添加进tabel2
[解决办法]
[解决办法]
CREATE TRIGGER [dbo].[test_INSERT] ON [dbo].[table1]
FOR INSERT
AS
BEGIN
declare @StuID as nvarchar(50)
declare @Name as nvarchar(50)
set @StuID = (select StuID from inserted )
set @Name = (select Name from inserted)
Insert into table2(StuID, Name ) Values(@StuID,@Name)
END
GO
[解决办法]
- SQL code
create table tb1 ( id int identity(1,1), name varchar(10))create table tb2( id int , name varchar(10))declare @name nvarchar(10);set @name = 'aaa';insert into tb1 values(@name)insert into tb2 select * from tb1 where name = @nameselect * from tb1 select * from tb2/*id,name1,aaa(1 行受影响)id,name1,aaa(1 行受影响)
[解决办法]
再加一个条件
- SQL code
insert into tb2 select * from tb1 where name = @name and id = @@identity
------解决方案--------------------
table2 的spwd 和table1 有啥关系 没整明白
如果有关系用触发器还是很简单的
没有关系就用 存储+事务 吧
[解决办法]
触发器? 没必要把 来个批量的就可以了吧!!!
[解决办法]
首先有个问题需要搞明白:
根据楼主给出的代码,可以推断出table1的StuId字段是自增的,那么table2的StuId字段是不是自增呢?如果也是的话,很难保证两边都一致了。
如果table2的StuId字段不是自增,仅仅是用来关联table1和table2的,或者是外关键字,那么可以这样:
- SQL code
SET XACT_ABORT ONBEGIN TRANSACTIONdeclare @Name nvarchar(50) ='aclie', @Birthday nvarchar(50) ='2011-1-1', @StaData nvarchar(50) = '2011-1-1', @Gender nvarchar(50) ='男', @Nation nvarchar(50)='维吾尔族', @BodyID nvarchar(50)='123456789123456789', @StuID int insert into Stu_info (Name,Birthday,StaData,Gender,Nation,BodyID) values (@Name,@Birthday,@StaData,@Gender,@Nation,@BodyID)SET @StuID=SCOPE_IDENTITY()insert into StuAcct (SName,SPwd,StuId) VALUES (@Name,RIGHT(BodyID,6),@StuID)COMMIT TRANSACTION