是否有与 SQL Server NewId() 函数等效的 Access?

Posted

技术标签:

【中文标题】是否有与 SQL Server NewId() 函数等效的 Access?【英文标题】:Is there an Access equivalent of the SQL Server NewId() function? 【发布时间】:2009-03-03 17:14:53 【问题描述】:

我编写了将数据加载到 SQL Server 数据库中的 SQL 语句(存储在文本文档中)。这些陈述需要每天重复。一些语句使用NewId() 函数来填充数据库中的键控字段,这工作正常。

虽然我正在编写应用程序来复制这些语句,但我想使用 Access 查询和宏,而不是将查询复制并粘贴到 SQL Server 中,从而节省了我每天的时间。一切正常,但我找不到任何可以替换 SQL Server NewId() 函数的函数。是否存在或有解决方法?

我使用的是 SQL Server 2005 和 Access 2007。

【问题讨论】:

“将查询复制并粘贴到 SQL 服务器中,从而节省了我每天的时间”。您可能会惊讶于您可以在 SQL Server 中执行哪些操作来节省您的时间。 【参考方案1】:

在 matt 的回答之上,您可以简单地使用 pass-through query 并使用来自 MS Access 的现有有效查询。

【讨论】:

哪个答案是“马特的答案”?也许他们的名字变了…… matt 的答案已被删除,其中包含:将this code 放入模块中并在查询中使用该函数。 @UuDdLrLrSs【参考方案2】:

解决方案是在您的代码中插入 stguidgen() 函数,您可以在此处找到它:http://trigeminal.fmsinc.com/code/guids.bas https://web.archive.org/web/20190129105748/http://trigeminal.fmsinc.com/code/guids.bas

【讨论】:

【参考方案3】:

我能想到的唯一解决方法是在您的访问数据库中定义“复制 ID”类型的列,并使其成为自动编号字段。这将自动为每一行生成一个唯一的 GUID,您根本不需要使用 newid()。在 SQL Server 中,您只需为“newid()”列设置默认值。

【讨论】:

GUID 在 Access:trigeminal.com/usenet/usenet011.asp?1033 中无法正常工作。但它们不是必需的——只需要一个自动编号。 糟糕——误读了原始问题(没有意识到 NewID() 专门生成了 GUID)。不过,GUID 在 Access 中仍然不能正常工作。 FWIW 生成 GUID 的 ACE/Jet 关键字是 GenGUID() 但 AFAIK 它只能与 SQL DDL 中的 DEFAULT 一起使用,例如CREATE TABLE 测试 (ID UNIQUEIDENTIFIER DEFAULT GenGUID() NOT NULL UNIQUE, data_col INTEGER);【参考方案4】:

再一次,这里似乎有些混乱。

如果我理解正确:

您有一个 Access 前端。

您有一个 SQL Server 2005 后端。

您需要的是能够在 SQL Server 表中生成 GUID。因此,建议在 Access 中添加 ReplicationID 类型的 AutoNumber 字段的答案将无济于事,因为该表不是 Jet 表,而是 SQL Server 表。

SQL当然可以作为直通查询执行,它将所有内容交给SQL Server进行处理,但我想知道为什么SQL Server中这个字段没有默认值? SQL Server 2005 表可以没有 NewId() 作为默认值吗?或者是否有其他方法可以让字段填充新的 GUID?我似乎记得一些关于使用 GUID 并将它们标记为“不用于复制”的事情(我目前无法访问 SQL Server 来查找它)。

在我看来,最好让数据库引擎来做这种事情,而不是在你的 SQL 中执行一个函数来做,但也许有人可以告诉我为什么我错了。

【讨论】:

以上是关于是否有与 SQL Server NewId() 函数等效的 Access?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 函数错误(我不能在 SQL Server 函数中使用 NewID() 吗?)

mysql里有没有象SQL server中newid()这样的函数?

SQL Server 中的伪随机可重复排序(不是 NEWID() 和 RAND())

是否有与VisualSVN Server等效的Mercurial安装程序?

SQL Server 中几个有用的特殊函数

是否有与实现无关的方式让 SQL DB 提供 UUID?