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

表内容复制出现问题
A表 
SQL code
create table CkQD
 (Id int auto_increment not null,
 constraint Id_pr primary key(Id),
 Pn varchar(30),
 Gz varchar(20),
 Sl bigint,
 Jz decimal(10,2),
 Dw varchar(10),
 Ckt datetime,
 Jlr varchar(20),
 chr varchar(20),
 Bz varchar(100))

B表
SQL code

create table Ck
 (Id int auto_increment not null,
 constraint Id_pr primary key(Id),
 Pn varchar(30),
 Gz varchar(20),
 Sl bigint,
 Jz decimal(10,2),
 Dw varchar(10),
 Ckt datetime,
 Jlr varchar(20),
 chr varchar(20),
 Bz varchar(100))


现在我要把每次A表内容插入B表,但是B表的ID列必须用自动生成的,不能插入A表的进来,我的语句出现问题不能执行
SQL code
insert into ck(ck.id(default),(select ckqd.Pn,ckqd.Gz,ckqd.Sl,ckqd.Jz,ckqd.Dw,ckqd.Ckt,ckqd.Jlr,ckqd.chr,ckqd.Bz from ckqd,rk where ckqd.Pn = rk.Pn and ckqd.Sl <= rk.Sl));


求解决方法

------解决方案--------------------
insert into ck(Pn , Gz , Sl , Jz, Dw , Ckt , Jlr , chr , Bz )
select ckqd.Pn,ckqd.Gz,ckqd.Sl,ckqd.Jz,ckqd.Dw,ckqd.Ckt,ckqd.Jlr,ckqd.chr,ckqd.Bz from ckqd,rk where ckqd.Pn = rk.Pn and ckqd.Sl <= rk.Sl;

------解决方案--------------------
select Sl into v_Rk_Sl from Rk where Pn = v_CkQD_Pn;
检查结果是否有多条
------解决方案--------------------
开启事务后,出错就会回滚了。
------解决方案--------------------
探讨

渐渐发现mysql也挺强大,谁能推荐一本比较精简的入门书

------解决方案--------------------
探讨

能帮我把这个过程加个事务嘛假如出现Procedure execution failed
1172 - Result consisted of more than one row,就回滚,分不够再加