@@ -27,6 +27,8 @@ defmodule Ecto.Integration.Migration do
27
27
add :intensity , :float
28
28
add :author_id , :integer
29
29
add :posted , :date
30
+ add :composite_a , :integer
31
+ add :composite_b , :integer
30
32
timestamps ( null: true )
31
33
end
32
34
@@ -108,6 +110,27 @@ defmodule Ecto.Integration.Migration do
108
110
add :name , :string
109
111
end
110
112
113
+ create table ( :composite_pk_composite_pk , primary_key: false ) do
114
+ add :b_1 , :integer
115
+ add :a_1 , references ( :composite_pk , column: :a , with: [ b_1: :b ] , type: :integer )
116
+ add :b_2 , :integer
117
+ add :a_2 , references ( :composite_pk , column: :a , with: [ b_2: :b ] , type: :integer )
118
+ end
119
+
120
+
121
+ # TODO not sure if it is important to have a foreign keys defined properly; see other associations in "posts"
122
+ alter table ( :posts ) do
123
+ modify :composite_a , references ( :composite_pk , column: :a , with: [ composite_b: :b ] , type: :integer )
124
+ end
125
+
126
+ create table ( :posts_composite_pk ) do
127
+ add :post_id , references ( :posts ) , primary_key: true
128
+ add :composite_a , references ( :composite_pk , column: :a , with: [ composite_b: :b ] , type: :integer ) , primary_key: true
129
+ add :composite_b , :integer , primary_key: true
130
+ end
131
+
132
+ create unique_index ( :posts_composite_pk , [ :post_id , :composite_a , :composite_b ] )
133
+
111
134
create table ( :corrupted_pk , primary_key: false ) do
112
135
add :a , :string
113
136
end
0 commit comments