unique_index
sarebbe non creare una chiave primaria composta come mostrato nell'esempio della domanda. Crea un vincolo unico.
Se si vuole creare una chiave primaria composta (nota: non consigliato quando si lavora con Ecto), there's more information here:
Migrazione:
defmodule HelloPhoenix.Repo.Migrations.CreatePlayer do
use Ecto.Migration
def change do
create table(:players, primary_key: false) do
add :first_name, :string, primary_key: true
add :last_name, :string, primary_key: true
add :position, :string
add :number, :integer
...
schema:
defmodule HelloPhoenix.Player do
use Ecto.Schema
@primary_key false
schema "players" do
field :first_name, :string, primary_key: true
field :last_name, :string, primary_key: true
field :position, :string
field :number, :integer
...
Nella maggior parte dei casi, unique_index
è ciò che si desidera, comunque.
Questo dovrebbe essere contrassegnato come la risposta accettata imo. @TheSquad, fa: name_your_constraint deve essere o: col1 o: col2 in questo contesto? Riferimento: https://hexdocs.pm/ecto/Ecto.Changeset.html#unique_constraint/3 – Olshansk
assolutamente no, puoi mettere qualsiasi atomo per cui vuoi avere un messaggio di errore completo quando il vincolo non è soddisfatto – TheSquad