
์ฒ์ฒํ์ฌ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ์ค ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค.
ERROR: duplicate key value violates unique constraint "student_courses_pkey"
Detail: Key (id)=(1646) already exists.
Transaction silently rolled back because it has been marked as rollback-only
์ ํ๋ก์ ํธ์์๋ StudentCourse ์ํฐํฐ๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ๋์ด ์์ต๋๋ค.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
์ฆ, id๋ DB์์ ์๋ ์ฆ๊ฐ(์ํ์ค) ๋ฐฉ์์ผ๋ก ์์ฑ๋ฉ๋๋ค.
๊ทธ๋ฐ๋ฐ๋ id๊ฐ ์ค๋ณต๋๋ฉด์ ์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค.
id๋ ์๋ ์ฆ๊ฐ(์ํ์ค) ์ค์ ์ด๊ธฐ ๋๋ฌธ์ ์ค๋ณต ํค๊ฐ ์๊ธธ ์ด์ ๊ฐ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๊ทธ๋ฌ๋, DB ๋ฐ์ดํฐ๋ฅผ ํ์ธํด๋ณด๋ ์ค๋ณต key ๊ฐ์ธ 1646์ ํด๋นํ๋ StudentCourse ๋ ์ฝ๋๊ฐ ์กด์ฌํ๋ ๊ฒ์ ํ์ธํ์ต๋๋ค.
์์ธ์ ์๋์ผ๋ก CSV ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ๊ฒ์ด์์ต๋๋ค.
PostgreSQL์ ์๋ ์ฆ๊ฐ๋ฅผ ์ํด ๋ด๋ถ์ ์ผ๋ก ์ํ์ค๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
์๋ฅผ ๋ค์ด student_courses ํ
์ด๋ธ์ ๊ธฐ๋ณธํค ์ํ์ค๋ student_courses_id_seq ์
๋๋ค.
ํ์ง๋ง CSV๋ SQL๋ก id ๊ฐ์ ์ง์ ์ง์ ํด์ insertํ๋ฉด, ์ํ์ค๋ ๊ทธ ์ฌ์ค์ ์์ง ๋ชปํฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋กโฆ
id = 1646๊น์ง ์กด์ฌ1645์ ๋จธ๋ฌด๋ฆid = 1646 ์ฌ์ฌ์ฉ โ ์ค๋ณต ํค ์๋ฌ ๋ฐ์์ํ์ค ๊ฐ์ ํ ์ด๋ธ์ ํ์ฌ ์ต๋ id ์ดํ๋ก ์๋ ๊ฐฑ์ ํด์ผ ํฉ๋๋ค.
-- student_courses ํ
์ด๋ธ์ ์ต๋ id ๊ธฐ์ค์ผ๋ก ์ํ์ค ๊ฐ ์ฌ์ค์
SELECT setval('student_courses_id_seq', (SELECT MAX(id)
FROM student_courses) + 1);
์ด์ ์ํ์ค๊ฐ ์ ์์ ์ผ๋ก ์ด์ด์ ๋ฒํธ๋ฅผ ๋ฐ๊ธํฉ๋๋ค.
1. CSV ๋ฑ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ๋๋ id๋ฅผ ์๋ต โ DB ์ํ์ค๊ฐ ์์์ ๊ด๋ฆฌ
2. ๋ถ๊ฐํผํ๊ฒ id๋ฅผ ์ง์ ํด์ผ ํ๋ค๋ฉด, ์ฝ์
ํ ๋ฐ๋์ setval()๋ก ์ํ์ค๋ฅผ ์กฐ์
๋ฌธ์ : ์๋ ์ฆ๊ฐ ์ปฌ๋ผ์์ ์ค๋ณต ID ๋ฐ์
์์ธ : CSV ๋ฑ ์๋ ์ฝ์
์ ์ํ์ค ๊ฐ์ด ๊ฐฑ์ ๋์ง ์์
ํด๊ฒฐ : setval()๋ก ์ํ์ค๋ฅผ ํ
์ด๋ธ ์ต๋ id + 1 ๋ก ์๋ ์ค์
์๋ฐฉ : ์๋ ์ฝ์
ํ ์ํ์ค ์ฌ์กฐ์ , ๊ฐ๋ฅํ๋ฉด id ์๋ต ํ insert
๊ฒฐ๋ก : PostgreSQL์์๋ ์ํ์ค์ ์ค์ ๋ฐ์ดํฐ๊ฐ ์ด๊ธ๋ ์ ์๋ค.
ํนํ ์๋ ๋ฐ์ดํฐ ์ฝ์
์ ํ๋ค๋ฉด ๋ฐ๋์ setval()๋ก ํ์ธ/๋ณด์ ํ๋ ์ต๊ด์ด ํ์ํ๋ค.