Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
MS Access-PostgreSQL自动编号_Postgresql_Ms Access - Fatal编程技术网

MS Access-PostgreSQL自动编号

MS Access-PostgreSQL自动编号,postgresql,ms-access,Postgresql,Ms Access,我的前端是ms access,后端是Postgresql。在转移到Postgresql之前,数据库通常位于SQL Server上。大多数表都有一个名为ID的列,它是Access中的一个自动编号,因此它会自动获取下一个ID。它过去在simple Access(数据库从accdb文件启动)上运行良好,然后在移动到SQL server时运行良好 移动到PostgreSQL后,虽然列现在在Access中标记为“Number”,并且添加新记录时不提供新ID,但这会导致“主键不能为null”错误。列ID设置

我的前端是ms access,后端是Postgresql。在转移到Postgresql之前,数据库通常位于SQL Server上。大多数表都有一个名为ID的列,它是Access中的一个自动编号,因此它会自动获取下一个ID。它过去在simple Access(数据库从accdb文件启动)上运行良好,然后在移动到SQL server时运行良好

移动到PostgreSQL后,虽然列现在在Access中标记为“Number”,并且添加新记录时不提供新ID,但这会导致“主键不能为null”错误。列ID设置为INTEGER,标识为:Always,增量为1。显然,我不能在Access中更改表并将number更改为autonumber,因为它作为链接表是只读的

如何使Ms Access将PostgreSQL的标识列识别为自动编号

使用一些详细信息进行编辑: 我有一张叫订单的桌子和一张叫作业的桌子。每个订单都有多个作业,它们通过OrderID列连接。在没有任何作业的情况下添加订单可以正常工作(即使列是“Number”而不是“AutoNumber”Postgres会正确创建新的唯一值),但当我将作业添加到该订单时,会出现“Primary Key cannot null”错误


我添加了作业ID字段,使其在表单上可见,并且在编辑作业表单的其他列时,该字段没有任何值。我曾经在作业添加表单上使用Me.Dirty=False创建一个新ID,这正是报告错误的地方。因此Me.Dirty=False不会在PostGRE上创建新ID,但它在Access或SQL Server上创建了一个很好的ID。

我不确定
PostGRE
是否可以自动递增列数据。如果没有,则可以使用
DMax(…)+1
增加1,并通过
VBA
或表达式将值放入主键字段。当我添加新订单时,Postgre自动增加很好。它采用下一个可能的ID。问题是,当我添加作业时,MS Access会在创建记录时增加自动编号,而Postgre和SQL Server会在保存记录时增加自动编号。这就是为什么我在向记录添加更多数据之前使用Me.Dirty=False保存记录。SQL Server的工作原理与此类似,Postgre并没有使用Access中的链接表进行快速测试,该表连接到定义的PostgreSQL表。对于带有链接的连续子表单的“订单”表单来说,添加/编辑相关的“作业”效果很好。请将您的问题提供给我们。