是否可以在柴油中使用没有主键的表?锈
Posted
技术标签:
【中文标题】是否可以在柴油中使用没有主键的表?锈【英文标题】:Is it possible to use a table without primary key in diesel? Rust 【发布时间】:2020-08-02 03:40:04 【问题描述】:我是 Rust 新手,我正在使用 Diesel 和 Actix-web 制作 API。我在 pgsql 和 mongodb 中有一个数据库,我仅将 diesel 1.4.4 用于 pgsql。
首先,我做了一个测试,用它的表和主键创建了一个数据库,一切正常。但是,总会有一些表没有主键而只有外键。
我注意到 Diesel 只支持带主键的表,但是如果您想使用没有主键而只有外键的表,有没有办法导入该表?手动可以吗?也就是说,在 schema.rs 和我的 models.rs 中定义它。
【问题讨论】:
【参考方案1】:diesel 不支持没有主键的表,因为从数据库的角度来看,它们是不好的做法。在几乎所有情况下,都会有一些列组合形成自然主键,否则首选添加人工主键。如果您的表仅包含外键列,则自然外键将由所有这些列构成。
也就是说:可以通过告诉diesel 列的特定(组合)应被视为主键来将柴油与没有主键列的表一起使用。在这种情况下,您需要手动为这些表编写 table!
定义。
【讨论】:
对于 timeseries 表,没有主键,如果你在 timescaledb 中设置一个,你会出错,所以这确实是柴油的限制之一, 至少 timescaledb 允许主键存在,它们只需要包含时间列。详情请见here。以上是关于是否可以在柴油中使用没有主键的表?锈的主要内容,如果未能解决你的问题,请参考以下文章