시나리오 : 회사의 출석 시스템이 있을때, 매일 밤 12시에 전 사원의 당일 출석 데이터가 생성되도록 하고 싶다

 

1. 테이블 생성

 

TimeStamp default current_timestamp()

위와 같은 방식으로 현재 시각을 넣어줄 수 있겠지만, 그럴 경우

2021-01-15 13:58:12

위와 같이 년월일 뿐 아니라 시분초까지 저장되게 된다

 

이렇게 되니 프론트에 뿌릴때도 한번 가공해야하고.. 비교하기도 힘들고.. 여러모로 귀찮아서 더 좋은 방법을 찾아봤다

 

date default (CURRENT_DATE)

이런 방식으로 저장할 경우, 시간 정보는 없이 날짜 정보만 저장되게 된다

 

create table ATTENDANCE(
	date date DEFAULT (CURRENT_DATE),
	userId varchar(15),
	attend int default 1,
	primary key(date, userId),
	FOREIGN KEY (userId) references USER(userId)
);

위와 같이 날짜 | 계정id | 출석여부 3가지로 테이블을 구성했다

 

 

2. 이벤트 등록

 

우선 MySQL의 이벤트가 활성화 상태인지 체크해야한다

 

show variables like "event%";

위 명령어를 입력하여 확인할 수 있다

ON 이라면 활성화 된 것이다.

 

OFF라면 cnf파일이나 ini파일 내부에

event_scheduler = ON

이렇게 설정해주면 된다 (MySQL에서 바로 바꿀 경우, 재시작되면 설정이 증발한다)

 

 

그 후 매일매일 실행될 이벤트를 등록하면 된다

create event if not exists INSERTATTENDANCE # event 이름
	on schedule
		every 1 day # 매일매일
        STARTS '2021-07-02 00:05:00' # 기준이 될 시작 시간
	on completion preserve enable # 수행 후 삭제하지 않음
    DO
    insert into ATTENDANCE (`userid`) select userId from user; #실제 수행될 SQL문

다음과 같은 이벤트로, 7/2 00:05분에 시작하여 하루마다 한번씩 실행되니 매일 00시 05분에 실행되는 것이다

 

마지막 insert문이 실행되며, ATTENDANCE 테이블에 모든 userId를 넣어주며, 나머지 date와 attend 컬럼은 default값이 설정되 있으므로 매일 / 모든 user에 대해 / 기본 attend 1(결석) 의 값이 들어가게 된다

 

실제로 며칠정도 두면 다음과 같이 자동으로 데이터가 생성된걸 확인할 수 있다

 

 

+ 혹시 해당 시간이 되었는데 이벤트가 실행되지 않았다면, MySQL의 시간이 우리 시간과 맞지 않을 수 있다

 

select now();

다음 명령어로 확인 가능하다

 

 

HackMD - Collaborative Markdown Knowledge Base

Best way to write and share your knowledge in markdown.

hackmd.io

 

hackmd.io 서비스를 이용하면 가능하다

 

 

New note를 이용해 새 노트를 생성한 후

 

 

우상단 공유버튼에서 읽기 권한, 수정 권한 설정 후 Copy를 눌러 링크를 공유하면 된다

링크 공유로 할 경우 Publish는 필요 없는듯하다

 

mode는 초기에 어떤 형태로 페이지가 열릴지 설정한다

1. chrome://flags 접속

 

2. calcuated-native 검색

 

 

3. Disabled로 변경 후 크롬 재시작

@DynamicInsert
@DynamicUpdate

 

어노테이션을 클래스 상단에 붙여주면 null 값은 insert/update문에 들어가지 않게 된다

해결방법 : auto_increment 옵션은 int나 float같은 숫자값에만 사용할 수 있다

 

[게시글링크]

 

글 읽기 - ✅ (수정) solved.ac 1주년 (2021년 6월 5일)

댓글을 작성하려면 로그인해야 합니다.

www.acmicpc.net

 

solved.ac 1주년 기념으로 뱃지 / 프로필 배경을 증정한다고 합니다

 

  • 참여방법 : 이전에 푼 적 없는 문제 1문제 해결
  • 참여기간 : 5/31 ~ 6/7

 

뱃지

 

프로필 배경

 

뱃지와 프로필 배경은 프로필 - 프로필 편집에서 추가/변경 가능합니다

 

적용 모습

 

MyBatis를 통해 실행한 쿼리문의 결과와, DBMS에서 직접 실행한 쿼리문의 결과가 다를 때,

 

commit이 정상적으로 된 것인지 확인할 필요가 있다

1. 크롬 사용자 추가 (사용자 폴더 지정)

 

1. 기존 크롬 바로가기를 복사해 새 바로가기를 만든다

 

 

2. 마우스 우클릭 - 속성

3. 대상 항목에 --user-data-dir=폴더경로 를 추가한다

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir=c:\chrome_profile\test2

// 폴더경로에 공백 등이 있으면, ""로 감싸줘야한다
// 이때, \는 \\로 처리한다

 

4. 바로가기 실행시 기존 사용자가 아닌 새 chrome창이 열리며, 해당 경로의 폴더가 자동 생성된다

 

2. 이클립스에서 해당 프로필의 chrome 사용하게 설정하기

 

1. 이클립스 메뉴의 Window - Preferences에서 browser 검색하기

2. 검색된 Browser중 Chrome 선택 - 우측의 Edit버튼 선택

3. Parameters에 --user-data-dir=폴더경로 추가하기

4. 해당 workspace에서 크롬을 사용하게 되면, 지정한 profile의 크롬으로 작동하게 된다

+ Recent posts