Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何限制在数据库中生成RRN(参考检索号)_Sql_Iso8583 - Fatal编程技术网

Sql 如何限制在数据库中生成RRN(参考检索号)

Sql 如何限制在数据库中生成RRN(参考检索号),sql,iso8583,Sql,Iso8583,这不是一个编程问题,我想这是一个逻辑问题或数据库设计问题 要回答这个问题,你需要了解一些有关银行交易的知识 基本上,对于您进行的每笔交易(销售、退款、强制销售),如果主机批准该交易,主机将向您发送一个RRN(参考检索编号),这是一个识别该交易的编号 问题是,我不知道主机是如何管理这个数字的,我的意思是我假设这种方法: RRN由以下各项生成: 交易类型 RRN 成员资格(取决于货币) 批号 这四个实体可以在数据库中生成唯一的键,问题是我如何知道何时必须重置RRN值 我无法在DB中限制该唯一密钥

这不是一个编程问题,我想这是一个逻辑问题或数据库设计问题

要回答这个问题,你需要了解一些有关银行交易的知识

基本上,对于您进行的每笔交易(销售、退款、强制销售),如果主机批准该交易,主机将向您发送一个RRN(参考检索编号),这是一个识别该交易的编号

问题是,我不知道主机是如何管理这个数字的,我的意思是我假设这种方法:

RRN由以下各项生成:

  • 交易类型
  • RRN
  • 成员资格(取决于货币)
  • 批号
这四个实体可以在数据库中生成唯一的键,问题是我如何知道何时必须重置RRN值

我无法在DB中限制该唯一密钥,因为如果您进行事务处理 今天,我不知道主机是否在不知道的情况下重置了RRN值 我可能会在第二天重复RRN的编号,我会在发送违反唯一密钥的消息时抛出一个错误,但这不是预期的行为,理论上我不必控制RRN编号,因为这是主机的工作,但是,如果要取消或回滚该事务,如何在DB中标识该事务

如果要查询唯一事务,则不能有多行

我唯一想做的就是在不做唯一限制的情况下用这四个实体标识事务,但是如果我查询该事务
我有不止一个结果,抛出一个错误,说数据被破坏了

如果仅在数据库端生成的RRN不足以检测事务记录。这将是大量交易的问题。RRN可以在终端端生成,在这种情况下,您的数据库根本不受记录复制的保护

为了检测必要的交易,通常使用几个附加参数:终端ID(TID)、商户ID(MID)、至少交易时间戳等

POS集成商可能对后面的许多终端使用相同的TID和MID,并且也可能复制RRN

如前所述,最好使用内部DB的唯一ID,并记录所有内容,而不受基于多个字段的键的限制。 有必要进行投诉研究


从数据库中选择事务(用于完成、反转或链式加满)和重复检测过程(用于传入事务记录)时,应能够使用事务记录中的附加值。

RRN通常只是主机端计数器,例如数据库ID“限制”为(iirc)11位数字。RRN通常非常永久(至少6个月以确保退款匹配)

您所谈论的可能是用于请求/响应匹配的systan值,它通常在24小时内是唯一的,并且通常适用于TID和传输时间字段

这里可以看到一种基于Ruby的方法来构建可以驱动RRN和SYSTAN的通用计数器


解决方案可能是将主机RRN作为发送到主机的交易的安全参考,但为您的客户维护您自己的RRN,并将两者存储在DB中(例如:pos来,按pos RRN查找交易,从交易中获取收单机构RRN,发送无效)

在您的表中有一个实际唯一的ID如何,你可以控制自己-结合你收到的四个价值观?或者-如果保证RRN至少在每一天都是唯一的-将提交的列与日期和时间(包括即使在一天中RRN重置也应实际保护的时间)结合起来形成唯一密钥?