写sql进数据库(DB2)怎样实现自动插入(表的主键为String) DB2难道不支持主键的AUTOINCREMENT嘛? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有几种方法可以:1.(最简单的)每次插入前先select max(id) from tbl where算出最大值,不过你要保证以前数据库中的记录这一字段等长.(缺点:效率较低)2.就是靠数据库实现.(不过很不好意思DB2我不大了解!) 不好意思,忘记加1了.有几种方法可以:1.(最简单的)每次插入前先select max(id) from tbl where算出最大值再加1,不过你要保证以前数据库中的记录这一字段等长.(缺点:效率较低)2.就是靠数据库实现.(不过很不好意思DB2我不大了解!) hehe db2是什么数据库,是小型的吧! 谢谢pengji(彭乃超)和kendyzheng了,看来得找数据库高手 谢谢kendyzheng和pengji(彭乃超)了,看来的找db2高手楼上的是学生吗?不知道db2...... 应该有自动增长的主键设置!不过好像都是int型的,而不是String!oracle里有,sql server里也有,我想db2应该也有,不然…… 是呀,好象这种自增长的字段一般都是非String类型的,如果要用String,可能要用我前面说的办法了!每次插入前先select max(id) from tbl where算出最大值再加1,不过你要保证以前数据库中的记录这一字段等长(长度不够前面加0). to : pengji(彭乃超):先select max(id) from tbl where算出最大值再加1但数据库如果并行操作怎么办???我觉得这是退而求其之的下策! 当然要对表先进行LOCK喽,这不是最好的办法,但的确是可行的!哈哈!很多系统都是这样做的!ORACLE的sequence也不是String类型的,SQLSERVER也一样不是,如果要用String好象只有这种办法. to : pengji(彭乃超):确实是这样,以前我也经常这样干的,没办法,但后来老是有并发的问题!比如销售同时输单。但你有没发现,竟然都是要加一的,为什么一定要用string类型的?难道用其它的就不行吗? 如果并发问题比较严重,你可以把select max(id) ......insert into ().....写在一个存储过程中来调用,不过还是要开启事务处理!如果不用STRING就简单的多了! "写sql进数据库(DB2)怎样实现自动插入(表的主键为String)"如果在插入前,不用显示出来,其实还是挺好办的,那就是写一个函数,也是很容易解决的! 明白了,我还是把主键改成int,写函数又要增加开销了谢谢几伟大虾 问一个关于字符串截取的简单问题 日期操作的小白问题 继承时父类中静态数据成员在创建对象之前初始化吗 字符串小问题 我用jbuilder写了一个javamail发送字符串的application,在JB中运行得很好,但生成的exe却发送失败 高手请帮小女子解决一个问题,感激!!! 问一个List与ArrayList的问题 请问如何得到程序的当前目录? jbuilder6的一个菜鸟问题,急! 怎么禁止JDBC 的批量操作 我实现JScrollPane的JTextArea在JTextArea.append()时,可是他怎么也自动滚动不到最末行! Java狂想曲(转载)
1.(最简单的)每次插入前先select max(id) from tbl where算出最大值,不过你要保证以前数据库中的记录这一字段等长.(缺点:效率较低)
2.就是靠数据库实现.(不过很不好意思DB2我不大了解!)
有几种方法可以:
1.(最简单的)每次插入前先select max(id) from tbl where算出最大值再加1,不过你要保证以前数据库中的记录这一字段等长.(缺点:效率较低)
2.就是靠数据库实现.(不过很不好意思DB2我不大了解!)
楼上的是学生吗?不知道db2......
oracle里有,sql server里也有,我想db2应该也有,不然……
确实是这样,以前我也经常这样干的,没办法,但后来老是有并发的问题!比如销售同时输单。
但你有没发现,竟然都是要加一的,为什么一定要用string类型的?难道用其它的就不行吗?
insert into ().....写在一个存储过程中来调用,不过还是要开启事务处理!
如果不用STRING就简单的多了!
如果在插入前,不用显示出来,其实还是挺好办的,那就是写一个函数,也是很容易解决的!
谢谢几伟大虾