[MySQL] datetime column에 default 지정하기
페이지 정보
작성자 서방님 댓글 0건 조회 173회 작성일 15-01-16 13:56본문
테이블에는 default 값을 설정해줘서 insert 시에 지정해 주지 않아도 자동으로 설정할 수 있다. 귀찮게 모든 필드의 값을 설정하지 않아도 된다. 하지만 datetime의 경우는 default로 지정해 주는 값이 예약어로 정해져 있다. (지금까지 여태 몰랐어 TㅅT 매번 insert 문에 now() 적어줬는데..)
default 외에 row가 수정될 때 마다 값을 바꾸고 싶으면 on update를 사용하면 된다.
처음 insert할 때 moddate도 값을 넣고 싶으면 regdate처럼 DEFAULT를 주면 된다.
Datetime Column Type에 기본값 기정하기 - Joy Coding - Hans Wiki에 따르면 MySQL 5.6.5 이상 버전에서 지원한다고 한다.
- 참고
Datetime Column Type에 기본값 기정하기 - Joy Coding - Hans Wiki
default 외에 row가 수정될 때 마다 값을 바꾸고 싶으면 on update를 사용하면 된다.
mysql> CREATE TABLE test (
-> name VARCHAR(20),
-> regdate DATETIME DEFAULT CURRENT_TIMESTAMP,
-> moddate DATETIME ON UPDATE CURRENT_TIMESTAMP
-> );
Query OK, 0 rows affected (0.03 sec)
mysql> INSERT INTO test (name) VALUES ('user1');
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM test;
+-------+---------------------+---------+
| name | regdate | moddate |
+-------+---------------------+---------+
| user1 | 2014-03-29 21:30:19 | NULL |
+-------+---------------------+---------+
1 row in set (0.00 sec)
mysql> UPDATE test SET name='user2' WHERE name='user1';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM test;
+-------+---------------------+---------------------+
| name | regdate | moddate |
+-------+---------------------+---------------------+
| user2 | 2014-03-29 21:30:19 | 2014-03-29 21:31:22 |
+-------+---------------------+---------------------+
1 row in set (0.00 sec)
mysql>
-> name VARCHAR(20),
-> regdate DATETIME DEFAULT CURRENT_TIMESTAMP,
-> moddate DATETIME ON UPDATE CURRENT_TIMESTAMP
-> );
Query OK, 0 rows affected (0.03 sec)
mysql> INSERT INTO test (name) VALUES ('user1');
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM test;
+-------+---------------------+---------+
| name | regdate | moddate |
+-------+---------------------+---------+
| user1 | 2014-03-29 21:30:19 | NULL |
+-------+---------------------+---------+
1 row in set (0.00 sec)
mysql> UPDATE test SET name='user2' WHERE name='user1';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM test;
+-------+---------------------+---------------------+
| name | regdate | moddate |
+-------+---------------------+---------------------+
| user2 | 2014-03-29 21:30:19 | 2014-03-29 21:31:22 |
+-------+---------------------+---------------------+
1 row in set (0.00 sec)
mysql>
처음 insert할 때 moddate도 값을 넣고 싶으면 regdate처럼 DEFAULT를 주면 된다.
CREATE TABLE test (
-> name VARCHAR(20),
-> regdate DATETIME DEFAULT CURRENT_TIMESTAMP,
-> moddate DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO test (name) VALUES ('user1');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM test;
+-------+---------------------+---------------------+
| name | regdate | moddate |
+-------+---------------------+---------------------+
| user1 | 2014-03-29 21:36:08 | 2014-03-29 21:36:08 |
+-------+---------------------+---------------------+
1 row in set (0.00 sec)
mysql>
-> name VARCHAR(20),
-> regdate DATETIME DEFAULT CURRENT_TIMESTAMP,
-> moddate DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO test (name) VALUES ('user1');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM test;
+-------+---------------------+---------------------+
| name | regdate | moddate |
+-------+---------------------+---------------------+
| user1 | 2014-03-29 21:36:08 | 2014-03-29 21:36:08 |
+-------+---------------------+---------------------+
1 row in set (0.00 sec)
mysql>
Datetime Column Type에 기본값 기정하기 - Joy Coding - Hans Wiki에 따르면 MySQL 5.6.5 이상 버전에서 지원한다고 한다.
- 참고
Datetime Column Type에 기본값 기정하기 - Joy Coding - Hans Wiki
댓글목록
등록된 댓글이 없습니다.