回答編集履歴

1

調整

2023/11/20 05:53

投稿

yambejp
yambejp

スコア115003

test CHANGED
@@ -1,2 +1,36 @@
1
1
  やりたいことの意図がわかりませんが、primary keyを更新するのは意味がないのでやめたほうがよいでしょう。
2
2
  もしデータの順序を担保したいということであればidを更新するより更新日時などのカラムをつくっておきそこを更新すればよいような気がします。
3
+
4
+ # 参考
5
+ ```SQL
6
+ CREATE TABLE IF NOT EXISTS test_users (
7
+ id INT PRIMARY KEY AUTO_INCREMENT,
8
+ name VARCHAR(255),
9
+ kind VARCHAR(255),
10
+ age INT,
11
+ created datetime not null default now(),
12
+ updated datetime null,
13
+ UNIQUE KEY unique_name_kind (name, kind)
14
+ );
15
+
16
+ INSERT INTO test_users
17
+ (name, kind, age)
18
+ VALUES
19
+ ('John', 'TypeA', 25),
20
+ ('John', 'TypeB', 30),
21
+ ('Alice', 'TypeB', 28);
22
+ ```
23
+ # insert/update
24
+ ```SQL
25
+ INSERT INTO test_users
26
+ (name, kind, age)
27
+ VALUES
28
+ ('John', 'TypeA', 0),
29
+ ('John', 'TypeB', 30),
30
+ ('John', 'TypeC', 100)
31
+ ON DUPLICATE KEY
32
+ UPDATE
33
+ age=values(age),
34
+ updated=now()
35
+ ;
36
+ ```