写sql进数据库(DB2)怎样实现自动插入(表的主键为String)

adonwjw 2002-01-22 03:28:40
写sql进数据库(DB2)怎样实现自动插入(表的主键为String)
其它字段为手动输入,而主键为自动更新
...全文
294 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
adonwjw 2002-01-28
  • 打赏
  • 举报
回复
明白了,我还是把主键改成int,写函数又要增加开销了
谢谢几伟大虾
xmvigour 2002-01-25
  • 打赏
  • 举报
回复
"写sql进数据库(DB2)怎样实现自动插入(表的主键为String)"
如果在插入前,不用显示出来,其实还是挺好办的,那就是写一个函数,也是很容易解决的!
pengji 2002-01-25
  • 打赏
  • 举报
回复
如果并发问题比较严重,你可以把select max(id) ......
insert into ().....写在一个存储过程中来调用,不过还是要开启事务处理!
如果不用STRING就简单的多了!
xmvigour 2002-01-25
  • 打赏
  • 举报
回复
to : pengji(彭乃超):
确实是这样,以前我也经常这样干的,没办法,但后来老是有并发的问题!比如销售同时输单。
但你有没发现,竟然都是要加一的,为什么一定要用string类型的?难道用其它的就不行吗?
pengji 2002-01-25
  • 打赏
  • 举报
回复
当然要对表先进行LOCK喽,这不是最好的办法,但的确是可行的!哈哈!很多系统都是这样做的!ORACLE的sequence也不是String类型的,SQLSERVER也一样不是,如果要用String好象只有这种办法.
xmvigour 2002-01-25
  • 打赏
  • 举报
回复
to : pengji(彭乃超):先select max(id) from tbl where算出最大值再加1

但数据库如果并行操作怎么办???我觉得这是退而求其之的下策!
pengji 2002-01-24
  • 打赏
  • 举报
回复
是呀,好象这种自增长的字段一般都是非String类型的,如果要用String,可能要用我前面说的办法了!每次插入前先select max(id) from tbl where算出最大值再加1,不过你要保证以前数据库中的记录这一字段等长(长度不够前面加0).
xmvigour 2002-01-24
  • 打赏
  • 举报
回复
应该有自动增长的主键设置!不过好像都是int型的,而不是String!
oracle里有,sql server里也有,我想db2应该也有,不然……
adonwjw 2002-01-24
  • 打赏
  • 举报
回复
谢谢kendyzheng和pengji(彭乃超)了,看来的找db2高手
楼上的是学生吗?不知道db2......
adonwjw 2002-01-24
  • 打赏
  • 举报
回复
谢谢pengji(彭乃超)和kendyzheng了,看来得找数据库高手
adonwjw 2002-01-23
  • 打赏
  • 举报
回复
是不是在db2里面设置?
lpt 2002-01-23
  • 打赏
  • 举报
回复
hehe db2是什么数据库,是小型的吧!
pengji 2002-01-23
  • 打赏
  • 举报
回复
不好意思,忘记加1了.
有几种方法可以:
1.(最简单的)每次插入前先select max(id) from tbl where算出最大值再加1,不过你要保证以前数据库中的记录这一字段等长.(缺点:效率较低)
2.就是靠数据库实现.(不过很不好意思DB2我不大了解!)
pengji 2002-01-23
  • 打赏
  • 举报
回复
有几种方法可以:
1.(最简单的)每次插入前先select max(id) from tbl where算出最大值,不过你要保证以前数据库中的记录这一字段等长.(缺点:效率较低)
2.就是靠数据库实现.(不过很不好意思DB2我不大了解!)
kendyzheng 2002-01-22
  • 打赏
  • 举报
回复
DB2难道不支持主键的AUTOINCREMENT嘛?

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧