每天一个新的SQL序列

时间:2009-02-16 19:21:52

标签: sql date

在SQL数据库中每天创建一系列序列号的好方法是什么?

某些数据库系统中整数列的自动递增功能。

我正在创建/记录交易,交易由'date,serial no'对标识。

3 个答案:

答案 0 :(得分:1)

这取决于您拥有的数据库类型。如果您可以访问全局变量或生成器,则只需每天重置它并使用它来为您的序列号列添加种子。如果没有,您可以将值存储在一个表格中并查找它以使您的列播种,再次每天重置它。

如有必要,请不要忘记手动增加种子。 (生成器是一种特殊的全局变量,如果设置为可以自动递增。其他变量,当然表中的记录也不会。)

要重置该值,只需在insert上设置一个触发器,检查COUNT(DATE = today)是否为0.如果是,请重置该值。

答案 1 :(得分:1)

仅为此目的的特定表怎么样?

create table AvailableSerialNumbers (
  AvailableOn datetime primarykey,
  NextAvailableNumber int
)

你必须提前填写这个,但这很简单(确保这是自动完成而不是手动完成)。

请注意,如果您同时创建了大量序列号记录,则创建逻辑将在更新AvailbleSerialNumbers记录时遇到瓶颈。解决该问题的最简单方法是每天定义多个AvailableSerialNumbers记录(比如100个)并随机选择1进行更新。如果使用这种方法而不是“NextAvailableNumber”字段,它应该是from / to范围。当范围达到0时,删除范围记录。

答案 2 :(得分:0)

最好的方法是使用日期作为数字的一部分,例如今天有080216001到080216999。你有不连续的数字吗?