回答編集履歴

1

sample

2017/12/08 03:54

投稿

yambejp
yambejp

スコア114843

test CHANGED
@@ -5,3 +5,75 @@
5
5
  プライマリキーを共有するくらいなら一つのテーブルでやるべきだとは思いますが
6
6
 
7
7
  もしどうしてもというならトリガーという仕組みでやるのが妥当です。
8
+
9
+
10
+
11
+ # sample
12
+
13
+
14
+
15
+ まず、テーブルを2つ用意します。
16
+
17
+ tblAが主、tblBが従となるものとします。
18
+
19
+ tblBの主キーは勝手にauto_incrementしないよう注意下さい。
20
+
21
+ ```SQL
22
+
23
+ create table tblA(id int primary key auto_increment,val1 int);
24
+
25
+ create table tblB(id int primary key,val2 int);
26
+
27
+ ```
28
+
29
+
30
+
31
+ tblAで作られた主キーが自動でtblBにも投入されるためにトリガーを設定します
32
+
33
+ トリガーの書き方はちょっと特殊なのでなれるまでは違和感があるかもしれません。
34
+
35
+
36
+
37
+ ```SQL
38
+
39
+ drop trigger if exists trg_a ;
40
+
41
+ delimiter //
42
+
43
+ create trigger trg_a after insert on tblA
44
+
45
+ for each row begin
46
+
47
+ insert into tblB(id) values(new.id);
48
+
49
+ end;
50
+
51
+ //
52
+
53
+ delimiter ;
54
+
55
+ ```
56
+
57
+
58
+
59
+ 上記設定後、tblAにデータを投入します
60
+
61
+ ```SQL
62
+
63
+ insert into tblA(val1) values(10),(20),(30);
64
+
65
+ ```
66
+
67
+
68
+
69
+ あとはtblBにもデータが投入されているか確認をしてください
70
+
71
+
72
+
73
+ ```SQL
74
+
75
+ select * from tblA;
76
+
77
+ select * from tblB;
78
+
79
+ ```