@@ -27,6 +27,8 @@ defmodule Ecto.Integration.Migration do
2727 add :intensity , :float
2828 add :author_id , :integer
2929 add :posted , :date
30+ add :composite_a , :integer
31+ add :composite_b , :integer
3032 timestamps ( null: true )
3133 end
3234
@@ -113,6 +115,26 @@ defmodule Ecto.Integration.Migration do
113115 add :name , :string
114116 end
115117
118+ create table ( :composite_pk_composite_pk , primary_key: false ) do
119+ add :b_1 , :integer
120+ add :a_1 , references ( :composite_pk , column: :a , with: [ b_1: :b ] , type: :integer )
121+ add :b_2 , :integer
122+ add :a_2 , references ( :composite_pk , column: :a , with: [ b_2: :b ] , type: :integer )
123+ end
124+
125+
126+ alter table ( :posts ) do
127+ modify :composite_a , references ( :composite_pk , column: :a , with: [ composite_b: :b ] , type: :integer )
128+ end
129+
130+ create table ( :posts_composite_pk ) do
131+ add :post_id , references ( :posts ) , primary_key: true
132+ add :composite_a , references ( :composite_pk , column: :a , with: [ composite_b: :b ] , type: :integer ) , primary_key: true
133+ add :composite_b , :integer , primary_key: true
134+ end
135+
136+ create unique_index ( :posts_composite_pk , [ :post_id , :composite_a , :composite_b ] )
137+
116138 create table ( :corrupted_pk , primary_key: false ) do
117139 add :a , :string
118140 end
0 commit comments