以下のsqlにて、send_user_idとreceive_user_idはどちらもusers(user_id)を参照しています。
しかし、書き方を変えて試してみてもエラーになってしまいました。
仮にsend_user_idとreceive_user_idの値が被ってしまっても問題はないのですが、どうすればこれが解決できますか?
user_idをラッピングする方法はありそうですが、他にシンプルな書き方があれば是非教えてください。
sql
1-- create_users.sql 2CREATE TABLE IF NOT EXISTS users( 3 user_id BIGINT PRIMARY KEY, 4 name TEXT NOT NULL, 5 regist_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT(CURRENT_TIMESTAMP AT TIME ZONE 'jst') 6); 7 8-- create_constracts.sql 9CREATE TABLE IF NOT EXISTS contracts( 10 id BIGSERIAL PRIMARY KEY, 11 send_user_id BIGINT NOT NULL, 12 receive_user_id BIGINT NOT NULL, 13 amount BIGINT NOT NULL, 14 regist_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT(CURRENT_TIMESTAMP AT TIME ZONE 'jst'), 15 consent_at TIMESTAMP WITH TIME ZONE, 16 CONSTRAINT user_fk 17 -- ここ 18 FOREIGN KEY (send_user_id, receive_user_id) 19 REFERENCES users(user_id) 20 ON DELETE CASCADE 21);
試したこと
FOREIGN KEY (send_user_id) REFERENCES users(user_id) ON DELETE CASCADE FOREIGN KEY (receive_user_id) REFERENCES users(user_id) ON DELETE CASCADE
FOREIGN KEY (send_user_id, receive_user_id) REFERENCES users(user_id, user_id)
エラー文(rust sqlx-cli: sqlx migrate runで実行)
error: migration 20220822062308 was previously applied but has been modified
回答3件
あなたの回答
tips
プレビュー