Можно ли использовать таблицу без первичного ключа в дизеле? Ржавчина - PullRequest
1 голос
/ 19 апреля 2020

Я новичок в Rust и создаю API, используя Diesel и Actix-web. У меня есть БД в pg sql и mongodb, и я использую дизель 1.4.4 только для pg sql.

Сначала я сделал тестовое создание БД с ее таблицами и первичными ключами, и все работает нормально. Но всегда есть сценарий ios, в котором будут таблицы, которые не имеют первичного ключа и имеют только внешние ключи.

Я заметил, что Diesel поддерживает только таблицы с первичными ключами, но если вы хотите использовать таблицу, которая не имеет первичного ключа и имеет только внешний ключ, есть ли способ импортировать эту таблицу? Вы можете вручную? То есть, определяя его в schema.rs и в моих models.rs.

1 Ответ

0 голосов
/ 20 апреля 2020

Таблицы без первичного ключа не поддерживаются дизелем, потому что это плохая практика с точки зрения базы данных. Почти во всех случаях существует некоторая комбинация столбцов, которые образуют естественный первичный ключ, в противном случае предпочтительнее добавить искусственный ключ. Если у вас есть таблица, которая состоит только из столбцов с внешним ключом, естественный внешний ключ будет создан из всех этих столбцов.

При этом можно использовать дизель с таблицами без столбца первичного ключа, просто сообщив дизелю, что указанная c (комбинация) столбцов должна рассматриваться как первичный ключ. В этом случае вам нужно написать table! определение для этих таблиц вручную.

...