可以在没有数据库表的情况下生成序列号

本文关键字:情况下 序列号 数据库 | 更新日期: 2023-09-27 17:53:30

我正在为ASP.NET客户端编写一个简单的web表单。表单在提交时发送一封电子邮件。其中一个要求是,每个电子邮件应该有一个顺序的票号。

我为完成此操作而提出的两个选项包括将最后一个数字写入数据库,然后选择它并对其进行递增,或者对文本文件进行类似的操作。

如果可能的话,我希望避免外部依赖,并且为单个值创建一个数据库表似乎是多余的。但是,文本文件方法确实很糟糕,如果文本文件被删除或覆盖,则容易失败。

我可以考虑其他的选择吗?

可以在没有数据库表的情况下生成序列号

我可能会使用一个具有身份(自动递增)列的数据库,主要是因为它照顾多个线程或同一应用程序的分布式版本之间的锁定。它也可以很好地从重启和其他系统事件中恢复。

大多数数据库提供了在插入操作期间返回增量id的方法,因此您不应该必须选择记录返回以获得增量id。

您可以在应用程序状态中设置计数器。然而,这样的事情将丢失在应用程序重启(如IIS重启),而不是在多个web服务器在一个农场共享。我不推荐这样

您可以将对象序列化到磁盘,然后在需要时对其进行反序列化。将序列化的文件放在受保护的位置。但是这个方法存在并发性问题。