在Diesel中是否可以使用没有主键的表? Rust

3

我刚接触 Rust,正在使用 Diesel 和 Actix-web 制作 API。我有一个 pgsql 和 mongodb 的数据库,只使用 diesel 1.4.4 来操作 pgsql

首先,我进行了测试,创建了一个带表和主键的数据库,一切都很正常。但是,在某些情况下,可能会出现没有主键并且只有外键的表。

我注意到 Diesel 只支持带有主键的表,如果你想要使用没有主键只有外键的表,是否有导入该表的方法?可以手动导入吗?也就是,在 schema.rs 和 models.rs 中对其进行定义。

1个回答

2

由于在数据库方面,没有主键的表是不好的实践,因此 diesel 不支持这种表。在几乎所有情况下,都有一些列的组合形成了自然主键,否则添加一个人工主键是首选。如果您有一个只包含外键列的表,则自然外键将由所有这些列构成。

尽管如此:可以通过告诉 diesel 某个(组合)列应被视为主键,来使用没有主键列的表。在这种情况下,您需要手动编写 table! 定义。


1
对于时间序列表,没有主键。如果您尝试在TimescaleDB中设置一个主键,将会出现错误。因此,这确实是Diesel的限制之一。 - Vidy Videni
至少timescaledb允许存在主键,只需要包括时间列即可。有关详细信息,请参见此处 - weiznich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接