在我的项目收据编号是自动增量,一年的完成是每年的4月1日至3月31日。一旦年份完成,收据不应该重置为1.我已经尝试了很长一段时间,但不能作为我的初学者。非常感谢你..
$query = mysql_query("SELECT `receipt_no` FROM tsurphus");
if(mysql_num_rows($query)>0) {
$data = mysql_query("SELECT max(receipt_no)+1 FROM tsurphus");
$res = mysql_fetch_row($data);
echo $res[0];
echo $_POST['$res'];
}
else {
echo 1;
}
答案 0 :(得分:0)
您对多会话有一般性问题。您阅读receipt_no
的方式可能会导致您的网站几乎同时被调用时获得两个相同数字的情况。
有一些方法。一个是您在每个4月1日午夜创建一个新表tsurphus
,其中receipt_no
被重置为0.每个插入此表将生成一个绝对唯一的值 - 当定义为{{1}时}。
但由于缺乏信息,这可能不适合您。
根据评论中的要求进行更新:
我只能向您提供我是如何做到这一点的信息。你必须决定它是否适合你。对于我写的项目来说,这是一个完美的解决方案,因为他们需要每个财政年度都有一个完整的空表。
我在1月1日午夜时分将此命令作为cron作业运行。逻辑是以这样的方式实现的,即从未与现有的Auto Increment
命令发生冲突[我的意思是在新表尚未创建的情况下从未发生INSERT
命令]:
INSERT
我不知道你的内部约定关于CREATE TABLE IF NOT EXISTS tsurphus_2016 LIKE tsurphus_2016;
的名称,但是 - 如果它像我的那样,primary key
具有与表格相同的名称 - 那么你有还要重命名primary key
:
primary key
你必须在4月1日午夜时分运行它。