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

adonwjw 2002-01-22 03:28:40
写sql进数据库(DB2)怎样实现自动插入(表的主键为String)
其它字段为手动输入,而主键为自动更新
...全文
185 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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嘛?
回复
发帖
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2002-01-22 03:28
社区公告
暂无公告