[SQL] on update CURRENT_TIMESTAMP 삭제 mariaDB mysql

2022. 8. 29. 15:31기술집/WEB관련

728x90

별거 아닙니다.

이번에 홈페이지 작업을 하면서.. phpmyadmin 까는것도 귀찮고해서

그냥 생으로 작업해보기로합니다.

 

제가 테이블 설계할때 쓰던 해외 ERD 사이트에서 SQL 내보내기로 명령어는 뺐는데요.

이게.... phpmyadmin 에서는 아무 문제없이 명령어가 먹히는데

직접 갖다붙이니까 에러가 납니다. 

그 문제는 나중에 알게 되었지만... 처음에는 많이 당황스러웠죠 ㅋㅋㅋ

 

아무튼, 그 문제점을 파악하기전에 테이블 하나 만들었더니.. 

timestamp로 날짜 2개를 만들었는데 하나가 on update CURRENT_TIMESTAMP 가 걸렸습니다.

갱신 일시를 기록하는거라면 참 편한 옵션인데...

등록 일시를 기록하는 칼럼이라서 아무짝에도 쓸모가 없습니다.

 

 

 

아래쪽에 붙어줬으면 더 좋았을텐데.. ㅎㅎ

아무튼 이걸 먼저 검색신공으로 찾아서 바꿉니다.

 

순서는 해당 칼럼에 DEFAULT 값을 주고나서 나중에 이 DEFAULT 값을 삭제합니다.

 

 

 

ALTER table [테이블명] CHANGE

   [변경 대상 칼럼명]

   [변경 할 칼럼명] timestamp NOT NULL DEFAULT current_timestamp;

 

세줄로 썼는데 보기 편하기 위해서입니다.

ALTER 명령어를 사용하는데요. 변경 대상 칼럼명은 내가 바꾸고싶은 칼럼명을 쓰는것이고

변경 할 칼럼명은 변경 대상 칼럼명을 어떤 이름으로 바꿀것인지를 씁니다.

이름 그대로 할거라면 똑같은 이름으로 하셔도 무방합니다.

 

NULL 이 아니게해놓고 현재 일시를 기본값으로 세팅합니다.

여기까지만 하셔도 on update CURRENT_TIMESTAMP 는 없어집니다.

 

 

기본값으로 일시가 기록되는것이 아니라, 아무의미없는 값을 넣고싶었기에.... 전혀 건들지 않았다는 느낌으로?

0000-00-00 00:00:00 이런거죠.

그래서 기본값을 지워버립니다.

 

ALTER table [테이블명] ALTER COLUMN [칼럼명] DROP DEFAULT;

 

이렇게 입력하시면 대상 칼럼의 기본값을 지워버립니다.

 

 

 

결과... 기본값이 지워져서 초기화값으로 세팅이 됩니다.

NULL 이 기본값이냐, 초기화값이 기본값이냐.. 

어떤것이냐에 따라 달라지기는 하겠지만, 이번에 저는 이걸로 갑니다 ㅎ

 

여기까지가 on update CURRENT_TIMESTAMP 삭제 하는 방법이었고..

애초에 테이블을 만들때 세팅을 잘 하시면 이런 고생은 안하셔도 됩니다.

 

 

 

제 ERD 사이트에서 내보내기 한 SQL 입니다.

붙여넣기를 하니까 공백이라던가.. 이런쪽에서 문자코드가 달랐습니다.

결과... 구문 에러가 납니다.

\x0A 같은 코드가 보입니다.

공백 코드인데.. 문자코드가 달라서 보입니다.

phpmyadmin을 쓰면 이런문제는 나오지도 않습니다.

역시. 대세인가..??

 

아무튼. 여기서 문제가 되는 공백부분의 공백을 지워주고, utf-8 코드로 스페이스 한번 넣어줬습니다.

결과!

 

 

 

기본값 NULL 세팅으로 아주 잘 만들어졌습니다 ;;;

첨에 만들때.. 저렇게 공백이 뜨길래 문제가 되는 부분이 text NULL 과 timestamp NULL 이라서

이 두개는 NULL이 안되는가? 라는 생각에 지웠거든요.

 

그랬더니 mariaDB 멋대로 on update CURRENT_TIMESTAMP 까지 넣어버린거죠. mysql 도 똑같습니다 ㅋ

그러니 첨에 테이블 만들때 제대로 만들어주면 저런 고생 안해도 된다능!!!

 

NULL 말고 초기값을 세팅해주고싶으면... 기본값으로 넣어주면 됩니다.

 

 

 

요렇게. NOT NULL 세팅에 기본값으로 저렇게 해라!

timestamp 값에 맞게 00:00:00 은 자동으로 붙어주네요.

 

이게 참 별거아닌데..

오랫동안 sql문을 직접 안치고 phpmyadmin 으로 대충 select, update, delete 같은것만 쓰다보니...

잊혀지네요 ㅎㅎㅎㅎ

편리해질수록 작업도 편하고 하지만, 툴이 없어지면 아무것도 못하게되니

한번씩 이렇게 해주는것도 좋은것 같습니다.

 

 

 

728x90