[TIL] 2025-01-25_CURRENT_TIMESTAMP

Yuriยท2025๋…„ 1์›” 25์ผ

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
37/59
post-thumbnail

๐Ÿ”ซ ์ผ์ •๊ด€๋ฆฌ API ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ ๊ฒช์€ ๋ฌธ์ œ์ ๊ณผ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•, ์ƒˆ๋กœ ์•Œ๊ฒŒ๋œ ์ ์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

MySQL timestamp / datetime

timestamp์™€ datetime์€ ๋ชจ๋‘ ์ž๋™์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ˜„์žฌ ์‹œ๊ฐ„(CURRENT_TIMESTAMP)์œผ๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

ALTER TABLE schedule MODIFY COLUMN regDate timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '๋“ฑ๋ก์ผ';
ALTER TABLE schedule MODIFY COLUMN modDate timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT '์ˆ˜์ •์ผ';

ALTER TABLE user MODIFY COLUMN regDate timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '๋“ฑ๋ก์ผ';
ALTER TABLE user MODIFY COLUMN modDate timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT '์ˆ˜์ •์ผ';
  • default ๊ฐ’: DEFAULT CURRENT_TIMESTAMP
  • update ์‹œ ๊ฐ’: ON UPDATE CURRENT_TIMESTAMP

์ˆ˜์ •๋œ schedule DDL ํ™•์ธ

โ›”๏ธ [deprecated] explicit_defaults_for_timestamp : MySQL timestamp default ์˜ต์…˜

'OFF' ์ผ ๊ฒฝ์šฐ nullable ๋กœ ์„ ์–ธ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ์ž๋™์œผ๋กœ NOT NULL ๋กœ ์„ ์–ธํ•˜๊ณ  NULL ์„ ์ธ์„œํŠธํ•˜๋ฉด ์ž๋™์œผ๋กœ CURRENT_TIMESTAMP ๊ฐ€ ๋“ค์–ด๊ฐ€๋„๋ก ์„ค์ •ํ•˜๋Š” ์˜ต์…˜์ด์—ˆ์œผ๋‚˜ deprecated ๋˜์—ˆ๋‹ค.
๐Ÿšฉ DDL ๋กœ timestamp ์ปฌ๋Ÿผ์˜ ์ œ์•ฝ์กฐ๊ฑด์„ ์ง์ ‘ ์„ค์ •ํ•ด์•ผ๋งŒ ํ•œ๋‹ค.

columnconstraints
ts1, dt1X
ts2, dt2NOT NULL, DEFAULT CURRENT_TIMESTAMP
ts3, dt3NOT NULL, DEFAULT CURRENT_TIMESTAMP, ON UPDATE CURRENT_TIMESTAMP
ts4, dt4DEFAULT CURRENT_TIMESTAMP

[INSERT] timestamp / datetime

DEFAULT CURRENT_TIMESTAMP ์ œ์•ฝ์กฐ๊ฑด์ด ์žˆ๋Š” ์ปฌ๋Ÿผ์€ ํ–‰ ์ถ”๊ฐ€ ์‹œ ํ•ด๋‹น ์‹œ๊ฐ„์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค. (๋‹จ, nullable ์ธ ์ปฌ๋Ÿผ์— null ๊ฐ’์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š๋Š”๋‹ค. โ†’ ts4, dt4)

โš ๏ธ NOT NULL ์ œ์•ฝ์กฐ๊ฑด์ด ์žˆ๋Š” ์ปฌ๋Ÿผ์— null ์„ insert ํ•˜๋Š” ๊ฒฝ์šฐ, SQL Error ๋ฐœ์ƒ

[UPDATE] timestamp / datetime

ON UPDATE CURRENT_TIMESTAMP ์ œ์•ฝ์กฐ๊ฑด์ด ์žˆ๋Š” ์ปฌ๋Ÿผ์€ ํ–‰ ์ˆ˜์ • ์‹œ ํ•ด๋‹น ์‹œ๊ฐ„์œผ๋กœ ์ž๋™ ์—…๋ฐ์ดํŠธ ๋œ๋‹ค.


โž• (2025-02-04 ์ˆ˜์ •) JPA๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด DB์—์„œ CURRENT_TIMESTAMP ๋ฅผ ์ด์šฉํ•œ ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ / ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ์‹์€ ์ง€์–‘ํ•ด์•ผ ํ•œ๋‹ค.

  1. ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ์ธก๋ฉด
    • ๋ถ„์‚ฐ DB ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ์ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ DB์— ๋‚˜๋ˆ„์–ด ์ €์žฅ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ, DB ์‹œ์Šคํ…œ ์‹œ๊ฐ„์ด ๋‹ค๋ฅด๊ฒŒ ์ž…๋ ฅ๋  ์ˆ˜ ์žˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ ๋ณด์ •์œผ๋กœ ์ธํ•œ ์ˆ˜์ •์‹œ๊ฐ„ ๋ณ€๊ฒฝ
    • ๋น„์ฆˆ๋‹ˆ์Šค ๋ชฉ์ ์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ ๋ณด์ • ์ธก๋ฉด์œผ๋กœ Update๋ฅผ ํ•˜๋”๋ผ๋„ ์ˆ˜์ •์ผ์ž๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด ์ด๋ ฅ ์ถ”์ ์ด ์–ด๋ ค์›Œ์ง„๋‹ค.

JPA ์‚ฌ์šฉ

BaseEntity ์˜ @CreateDate, @LastModifiedDate ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์ƒ์„ฑ์ผ์ž์™€ ์ˆ˜์ •์ผ์ž๋ฅผ ์ƒ์„ฑ โ†’ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ์ฃผ์ฒด๊ฐ€ Java๊ฐ€ ๋œ๋‹ค.

๐Ÿ’ญ JPA๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„ Java์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋„๋ก ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜์ž. CURRENT_TIMESTAMP ์กฐ๊ฑด์€ ์ฐธ๊ณ ์šฉ์œผ๋กœ ์•Œ์•„๋‘์ž.

profile
์•ˆ๋…•ํ•˜์„ธ์š” :)

0๊ฐœ์˜ ๋Œ“๊ธ€