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

回答編集履歴

1

こうしん

2020/11/21 14:25

投稿

yambejp
yambejp

スコア117944

answer CHANGED
@@ -6,4 +6,33 @@
6
6
  ```
7
7
 
8
8
  ただ、ユニーク設定もしていない書籍名で出版社と価格を変えるのは
9
- 実践的ではありません。普通に主キーであるbookidを利用して変更すべきです
9
+ 実践的ではありません。普通に主キーであるbookidを利用して変更すべきです
10
+
11
+ # 主キーを使ったinsert/update
12
+ 念の為・・・
13
+ ```SQL
14
+ CREATE TABLE Book (
15
+ bookid INTEGER PRIMARY KEY,
16
+ bookname VARCHAR(40),
17
+ publisher VARCHAR(40),
18
+ price INTEGER
19
+ );
20
+
21
+ INSERT INTO Book VALUES
22
+ (1, 'サッカーの歴史', 'グッドスポーツ', 7000),
23
+ (2, 'サッカーを知っている女の子', '木の数', 13000),
24
+ (3, 'サッカーの理解', '大韓メディア', 22000);
25
+ ```
26
+ とりあえず挿入
27
+ ```SQL
28
+ insert into book values
29
+ (15, 'スポーツの楽しみ', '庭の科学書', 25000)
30
+ on duplicate key update set bookname=values(bookname),publisher=values(publisher),price=values(price);
31
+ ```
32
+
33
+ 主キーが競合するデータを挿入しようとして更新
34
+ ```SQL
35
+ insert into book values
36
+ (15,'スポーツの楽しみ','第一書籍',18000)
37
+ on duplicate key update bookname=values(bookname),publisher=values(publisher),price=values(price);
38
+ ```