teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

7

訂正

2016/08/31 11:33

投稿

A.Ichi
A.Ichi

スコア4070

answer CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  CREATE TABLE "account" (
13
13
  id int PRIMARY KEY,
14
- user_id int NOT NULL REFERENCES "user" ON DELETE CASCADE,
14
+ user_id int NOT NULL REFERENCES "user" (id) ON DELETE CASCADE,
15
15
  name VARCHAR
16
16
  );
17
17
 

6

変更

2016/08/31 11:33

投稿

A.Ichi
A.Ichi

スコア4070

answer CHANGED
@@ -12,18 +12,16 @@
12
12
  CREATE TABLE "account" (
13
13
  id int PRIMARY KEY,
14
14
  user_id int NOT NULL REFERENCES "user" ON DELETE CASCADE,
15
- name VARCHAR,
15
+ name VARCHAR
16
- FOREIGN KEY(user_id) REFERENCES "user" (id)
17
16
  );
18
17
 
19
18
  ```
20
19
 
21
- 既存テーブルを変更する方法をテストしていましたが、追加(2行目)みだとエラーにならないけれど自動削除がうまく行かず、一度FKRY削除後に再度追加すると出来ました(対処法ですけどよろしければ)
20
+ 既存テーブルを変更する方法をテストしていましたが、下記方法で出来ました。FKEY指定1つのみで有効でした。既存を削除して新FKRY追加する。
22
21
 
23
22
  ```sql
24
23
  ALTER TABLE "account" DROP CONSTRAINT "account_user_id_fkey";
25
24
  ALTER TABLE "account" ADD CONSTRAINT account_user_id_fkey1
26
25
    FOREIGN KEY (user_id) REFERENCES "user" (id) ON DELETE CASCADE;
27
- ALTER TABLE "account" ADD FOREIGN KEY(user_id) REFERENCES "user" (id);
28
26
  ```
29
27
 

5

訂正します

2016/08/31 11:27

投稿

A.Ichi
A.Ichi

スコア4070

answer CHANGED
@@ -17,3 +17,13 @@
17
17
  );
18
18
 
19
19
  ```
20
+
21
+ 既存テーブルを変更する方法をテストしていましたが、追加(2行目)のみだとエラーにはならないけれど自動削除がうまく行かず、一度FKRY削除後に再度追加すると出来ました。(対処法ですけどよろしければ)
22
+
23
+ ```sql
24
+ ALTER TABLE "account" DROP CONSTRAINT "account_user_id_fkey";
25
+ ALTER TABLE "account" ADD CONSTRAINT account_user_id_fkey1
26
+   FOREIGN KEY (user_id) REFERENCES "user" (id) ON DELETE CASCADE;
27
+ ALTER TABLE "account" ADD FOREIGN KEY(user_id) REFERENCES "user" (id);
28
+ ```
29
+

4

変更します。

2016/08/31 11:08

投稿

A.Ichi
A.Ichi

スコア4070

answer CHANGED
@@ -4,6 +4,16 @@
4
4
  設定すれば、親テーブルを削除すると子テーブルが自動的に削除されます。
5
5
 
6
6
  ```sql
7
+ CREATE TABLE "user" (
8
+ id int PRIMARY KEY,
9
+ name VARCHAR
10
+ );
11
+
7
- ALTER TABLE "account" ADD CONSTRAINT user_id FOREIGN KEY (user_id)
12
+ CREATE TABLE "account" (
13
+ id int PRIMARY KEY,
8
- REFERENCES "user" (id) ON DELETE CASCADE;
14
+ user_id int NOT NULL REFERENCES "user" ON DELETE CASCADE,
15
+ name VARCHAR,
16
+ FOREIGN KEY(user_id) REFERENCES "user" (id)
17
+ );
18
+
9
19
  ```

3

変更

2016/08/31 10:29

投稿

A.Ichi
A.Ichi

スコア4070

answer CHANGED
@@ -4,5 +4,6 @@
4
4
  設定すれば、親テーブルを削除すると子テーブルが自動的に削除されます。
5
5
 
6
6
  ```sql
7
- ALTER TABLE "account" ADD CONSTRAINT user_id FOREIGN KEY (user_id) REFERENCES "user" (id);
7
+ ALTER TABLE "account" ADD CONSTRAINT user_id FOREIGN KEY (user_id)
8
+ REFERENCES "user" (id) ON DELETE CASCADE;
8
9
  ```

2

追加

2016/08/31 09:31

投稿

A.Ichi
A.Ichi

スコア4070

answer CHANGED
@@ -1,4 +1,8 @@
1
1
  テーブル定義にて消す方法(親を削除すると従属する子テーブルを削除)
2
2
 
3
3
  子テーブルのFkeyを持つ項目(user_id?)に,REFERENCES user ON DELETE CASCADE,
4
- 設定すれば、親テーブルを削除すると子テーブルが自動的に削除されます。
4
+ 設定すれば、親テーブルを削除すると子テーブルが自動的に削除されます。
5
+
6
+ ```sql
7
+ ALTER TABLE "account" ADD CONSTRAINT user_id FOREIGN KEY (user_id) REFERENCES "user" (id);
8
+ ```

1

変更

2016/08/31 09:26

投稿

A.Ichi
A.Ichi

スコア4070

answer CHANGED
@@ -1,4 +1,4 @@
1
1
  テーブル定義にて消す方法(親を削除すると従属する子テーブルを削除)
2
2
 
3
3
  子テーブルのFkeyを持つ項目(user_id?)に,REFERENCES user ON DELETE CASCADE,
4
- 設定すれば、自動的に削除されます。
4
+ 設定すれば、親テーブルを削除すると子テーブルが自動的に削除されます。