你说的提交,是指更新的时候嘛 ?如果是的话,给你一个思路,去看看定义字段的时候的onupdate,他表示再这一行被更新的时候执行的操作!
追问不是更新,是新提交,那个值是该字段的最大值
此提交类似于在自增长字段里的提交,但我不能将该字段设置为自增长字段
是插入的时候嘛?那就是 oncreate !
追问能不能在页面上通过js或者其他什么手段加1后再提交
追答呵呵 , 你是想用程序控制,那就更简单了,我不知道你的后台是什么语言写的,不太好给你代码,但是思路绝对就简单的多了。首先你一定要确定你的这个字段是int类型或者是什么数字类型的,否则如果是varchar类型的会出问题,然后呢,你需要查这张表里面的这个字段目前已经达到了多少,假如说数据表名:testtable 然后那个字段假如说 叫。。。叫什么呢,就叫 abc吧!哈哈。
然后在插入的时候:
分开写,先查最大值,然后再加1 再插入
select abc from testtable order by abc desc limit 1
这样能够查出当前最大值,你拿到最大值之后再插入的时候加1的操作就不用我教你了吧。
但是你要知道,这种方式虽然可行,但是并不安全,如果两个线程同时执行,可能会查出同一个最大值,导致最后加1之后的值也相同,你自己斟酌一下吧。
或者你要知道,数据库本身跟程序不挂钩的,其他程序可能也在用你这个数据库,如果他也按照同样的方式来插入,你查出一个最大值之后没等插入新的最大值呢,他就查到了跟你一样的最大值,这样也是会出问题的。
追问谢谢你的热心帮助。
我也知道两个线程同时执行时可能的错误,但现在老板急着要,先应付一下吧,以后慢慢再想招。
现在的问题恰恰是“拿到最大值之后在插入的时候加1的操作”,我不知道该怎么将最大值加1
我使用php+mysql写的。现在我在前台调用最大值的代码是 该怎样将它改成加1?? 不好意思,我是初学,还很肤浅
我不是做PHP的,所以你写的我也不懂,咱们相同的地方只有sql语句可以交流,
加1 没有你想那么复杂,像上面说的,你插入的时候insert into testtable values(xx,xx,xx)
假如你先前查到的最大值是 4 那么你插入的时候,假如你的insert语句第三个参数就是abc字段那就
insert into testtable values(xx,xx,5);这样就完了嘛。
就是说你的select abc from testtable order by abc desc limit 1 查出来一个4
那么insert into testtable values(xx,xx,5);
追问谢谢你的热心帮助。
是我笨拙,我还没有搞定。
我现在已经找到了这个值,它不是具体的阿拉伯数字,而是一个代码。我是通过倒序第一找到的。
还有你说,将4改成5,它不能人工,必须由程序完成,我就是不明白怎样自动完成这个加法过程。
真不好意思屡屡的麻烦你了,我再加感谢!!!
4编程 5 ,大哥呀 4+1 不就等于5了吗? 我实在不知道你想问啥,不查出来的数 加 1 不就OK 了吗?
我现在是要把这个值(5)作为数据向数据库提交,但是现在没有5,只有4。我总不能将“4+1”作为数据提交吧?
我实在没法想也试了一下,把“4+1”提交后,数据库只识别成“4”
不好意思,还要烦你。
我汗呐!!! 你我不是让你"4+1" 而是4+1以数字形式相加。他不就变成5了嘛
感谢“东东程序猿”的热情帮助! 在你的帮助下我终于弄明白了—— 原来是: 改成以后: 其实我就是不知道这个“+1”应该怎么写,写在哪儿? 非常感谢你不厌其烦的帮助!!!
追答不是我不给你上代码,是PHP 我也不会呀,我只能给你提供思路和sql php的东西我也看不懂。。。我本身是搞java web的