tfdquery.aggregates 可以用作 autoIDgenerator
Can tfdquery.aggregates be used as autoIDgenerator
在 Delphi 中,TFDQuery 组件有一个 属性 "aggregates",它表示客户端聚合字段到数据集的轻量级版本。
如果您插入 "MAX(ID)",您得到的数字比 ID 的下一个空闲数字少一个。
如果这可以用于计算 ID 字段,那么为每种数据库提供 ID 字段的自动生成器将是一种非常简单的方法。
但我怀疑,因为它被称为"client side"。我不知道那是什么意思。它不是计算整个 table 的总和,而是只计算记录的局部分区吗?在最后一种情况下,一旦正确初始化,它也许可以用于自动发电机。
If this could be used to calculate the ID-Field it would be a very easy method to have an autogenerator for the ID-Field for every kind of database.
恐怕不会,无论如何,不会 "every kind of database"。 "client-side" 的意义在于客户端派生行 ID 的方法对于共享数据库没有好处,在共享数据库中,不同的用户可能会同时尝试向同一个 table 添加行。
对于多用户数据库,最好始终使用服务器端 RDMS 提供的任何工具来提供 ID 字段值。一些像 Interbase 这样的 RDMS 有所谓的生成器来可靠地为你做这件事。
在 Delphi 中,TFDQuery 组件有一个 属性 "aggregates",它表示客户端聚合字段到数据集的轻量级版本。
如果您插入 "MAX(ID)",您得到的数字比 ID 的下一个空闲数字少一个。
如果这可以用于计算 ID 字段,那么为每种数据库提供 ID 字段的自动生成器将是一种非常简单的方法。
但我怀疑,因为它被称为"client side"。我不知道那是什么意思。它不是计算整个 table 的总和,而是只计算记录的局部分区吗?在最后一种情况下,一旦正确初始化,它也许可以用于自动发电机。
If this could be used to calculate the ID-Field it would be a very easy method to have an autogenerator for the ID-Field for every kind of database.
恐怕不会,无论如何,不会 "every kind of database"。 "client-side" 的意义在于客户端派生行 ID 的方法对于共享数据库没有好处,在共享数据库中,不同的用户可能会同时尝试向同一个 table 添加行。
对于多用户数据库,最好始终使用服务器端 RDMS 提供的任何工具来提供 ID 字段值。一些像 Interbase 这样的 RDMS 有所谓的生成器来可靠地为你做这件事。