首页 文章

在Filemaker Pro中检索新插入的行的ID

提问于
浏览
2

有一个服务正在运行,它监视服务器上文件夹中的文件 . 每当将文件复制到此文件夹时,都会移动文件并通过ODBC连接将记录写入filemaker pro数据库 . 在同一个过程中,我需要新创建的行的ID来在另一个表中创建相关记录(使用外键约束) . 在Microsoft SQL Server中,我使用@@ identity来执行此操作,在Oracle中,我使用sequence.CURRVAL . 如何在Filemaker中获取新创建的行的标识字段?

3 回答

  • 2

    我不是FileMaker的ODBC接口的有经验的用户,但我可以建议一个可行的解决方案 .

    我假设您正在使用INSERT语句将数据导入FileMaker,您正在创建记录的表中有一个“ID”编号字段,并且ID字段设置为自动输入序列数 . 如果是这种情况,则根据FileMaker的ODBC文档支持MAX功能 .

    SELECT MAX (Table.ID) FROM Table
    
  • 1

    不幸的是,FileMaker ODBC没有内置函数来执行此操作 . 这是一个真正的问题 .

    问题源于FileMaker没有内置的主键支持 . 当然,几乎每个表都有唯一ID,但FileMaker没有任何内部方式来“知道”开发人员打算成为主键的字段 . 这使得ODBC引擎无法知道要回馈给您的值 .

    我认为大多数人在这种情况下最终会做的是将某种类型的UUID作为其CREATE的一部分插入到db中的新列中 . 然后立即使用where子句中的UUID使用另一个查询选择ID . 所以你必须做两个查询 . 第一个插入,第二个获取ID .

  • 4

    您可以通过在插入新行之前生成唯一ID然后将此ID添加到每个记录中来解决此问题吗?这将使您能够在创建后识别这两个记录 .

    我也问你为什么需要这个功能 . 将文件复制到文件夹时,您将记录添加到2个不同的表中 . 显然,我不知道解决方案是什么,所以我不能以这样或那样的方式提出建议 .

    不过,我现在的建议是重新考虑在ODBC进程中组织FileMaker数据的逻辑 . 听起来原始记录应该充当标记或触发器 . ODBC进程是否可以仅仅作为一种创建记录的机制,如何使用该记录的逻辑留给另一个进程,比如一个FM脚本?

相关问题