起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6537|回复: 12

[结贴] KSQL为何不能自动产生主键的值

  [复制链接]

32

主题

94

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
QQ
发表于 2014-3-26 12:04:15 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
我的java代码是下面这样写,PO_LKL_Tasks 这个表的关键字的默认值是在概念中设为guid()了,但执行时报错。java.sql.SQLException: Duplicate entry '' for key 1

String stmt;
  
  stmt = "insert into PO_LKL_Tasks t (t.fLKL_ClientSN,t.fArchNo,t.fQuarter,t.fImportTime,t.fBatch" +
    ",t.fClientNo,t.fClientName,t.fPersonInCharge,t.fRegisterDate,t.fMachineNum,t.fUniqueID,t.fInstallAddr,t.fMobile,t.fTelephone,t.fBusinessZone,t.fBusinessArea" +
    ",t.fLongitude,t.fLatitude,t.fConfirmAddr,t.fInspectTimes,t.fClientStatus) " +
    " (select c.fLKL_ClientSN,c.fArchNo,c.fQuarter,:currentDateTime() as fImportTime,'" + fBatch +"'"+
    ",c.fClientNo,c.fClientName,c.fPersonInCharge,c.fRegisterDate,c.fMachineNum,c.fUniqueID,c.fInstallAddr,c.fMobile,c.fTelephone,c.fBusinessArea,c.fBusinessArea" +
    ",c.fLongitude,c.fLatitude,c.fConfirmAddr,c.fInspectTimes,c.fClientStatus from PO_LKL_Client c " +
    " where c.fQuarter = '"+fQuarter+"' and c.fBatch = '" +fBatch+"')";
  
  com.justep.system.data.KSQL.executeUpdate(stmt, null, "/posmaintain/baseinfo/data", null);

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35936
发表于 2014-3-26 13:15:29 | 显示全部楼层
那个是概念中设置的默认值,自己用KSQL写insert的时候可以java.util.UUID.randomUUID生成
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

32

主题

94

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
QQ
 楼主| 发表于 2014-3-26 14:08:39 | 显示全部楼层
但是我现在是用SQL语句插入一批数量啊,java.util.UUID.randomUUID只能产生一个数据。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35936
发表于 2014-3-26 14:11:00 | 显示全部楼层
你不是select表中的数据进行插入的吗?那把主键的那列写成函数插入几条数据就生成几个啊,标准的sql中就是这样
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

11

主题

1134

帖子

1261

积分

金牌会员

Rank: 6Rank: 6

积分
1261
QQ
发表于 2014-3-26 14:12:57 | 显示全部楼层
carvel 发表于 2014-3-26 14:08
但是我现在是用SQL语句插入一批数量啊,java.util.UUID.randomUUID只能产生一个数据。 ...
看红色部分 改成这样不就可以了么
stmt = "insert into PO_LKL_Tasks t (t.fLKL_ClientSN,t.fArchNo,t.fQuarter,t.fImportTime,t.fBatch" +
    ",t.fClientNo,t.fClientName,t.fPersonInCharge,t.fRegisterDate,t.fMachineNum,t.fUniqueID,t.fInstallAddr,t.fMobile,t.fTelephone,t.fBusinessZone,t.fBusinessArea" +
    ",t.fLongitude,t.fLatitude,t.fConfirmAddr,t.fInspectTimes,t.fClientStatus) " +
    " (select UUID(),c.fArchNo,c.fQuarter,:currentDateTime() as fImportTime,'" + fBatch +"'"+
    ",c.fClientNo,c.fClientName,c.fPersonInCharge,c.fRegisterDate,c.fMachineNum,c.fUniqueID,c.fInstallAddr,c.fMobile,c.fTelephone,c.fBusinessArea,c.fBusinessArea" +
    ",c.fLongitude,c.fLatitude,c.fConfirmAddr,c.fInspectTimes,c.fClientStatus from PO_LKL_Client c " +
    " where c.fQuarter = '"+fQuarter+"' and c.fBatch = '" +fBatch+"')";
远程的联系方法QQ2025089647。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要
回复 支持 反对

使用道具 举报

32

主题

94

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
QQ
 楼主| 发表于 2014-3-26 14:16:05 | 显示全部楼层
我原来写过类似下面的的,但是函数只运行一次,只产生一个数据,第二条就报错了,因为select返回结果就是多少。
INSERT INTO SA_OPPerson1 p (p, p.sName, p.sCode) (SELECT :guid(), p1.sName, p1.sCode FROM SA_OPPerson2 p1 )
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35936
发表于 2014-3-26 14:20:59 | 显示全部楼层
sql中就是这样写的,可以到数据库中执行一下看看
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

32

主题

94

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
QQ
 楼主| 发表于 2014-3-26 14:33:38 | 显示全部楼层
还是报这样的错:
com.justep.exception.BusinessException: 编码: JUSTEP154020; 提示: 不支持KSQL函数UUID
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35936
发表于 2014-3-26 14:42:01 | 显示全部楼层
carvel 发表于 2014-3-26 14:33
还是报这样的错:
com.justep.exception.BusinessException: 编码: JUSTEP154020; 提示: 不支持KSQL函数UUI ...

KSQL中直接用guid()
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

32

主题

94

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
QQ
 楼主| 发表于 2014-3-26 14:47:35 | 显示全部楼层
可以了,在KSQL中为何guid(),不用写成:guid()的?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-10 10:39 , Processed in 0.082687 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表