MySQL Current_TIMESTAMP가 기본값으로 표시됨
테이블을 만드는 동안 다음 오류가 발생합니다.
ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
두 의 열을 있지 입니다.TIMESTAMP
와 함께CURRENT_TIMESTAMP
저는 둘 다 으로적둘, 사지않습다니하용다기본▁i를 사용하지 .ON UPDATE
절
실행하려는 DDL 쿼리는
CREATE TABLE user(
/* Basic Information */
id INT NOT NULL AUTO_INCREMENT,
firstname VARCHAR(255) NOT NULL,
surname VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
username VARCHAR(255) NOT NULL UNIQUE,
password CHAR(40) NOT NULL,
/* System status information */
active BOOL NOT NULL DEFAULT FALSE,
validated BOOL NOT NULL DEFAULT FALSE,
date_validated TIMESTAMP,
date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
/* Index */
PRIMARY KEY (id)
) Engine=InnoDB;
문제의 원인은 무엇입니까?
한 테이블에 두 개의 타임스탬프를 사용할 수 있습니다.기본적으로 DEFAULT 필드를 먼저 사용한 후 나머지 타임스탬프 필드를 사용합니다.
아래 쿼리가 작동합니다.
CREATE TABLE myTable
(
id INT,
date_registered TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
date_validated TIMESTAMP
);
sqlfidle에서 데모
MySQL 5.6.5부터는 이러한 제한이 더 이상 존재하지 않는다는 점에 유의해야 한다고 생각합니다.제한이 제거되었으며 일부 추가 기능이 추가되었습니다.특히: DATTIME 필드뿐만 아니라 여러 TIMESTAMP 필드에도 다음 블로그 게시물(수정한 사람이 쓴 것으로 추정됨)에 설명된 대로 필드를 현재 타임스탬프/날짜 시간으로 설정하는 자동 기본값이 있을 수 있습니다. http://optimize-this.blogspot.com/2012/04/datetime-default-now-finally-available.html
내용은 이쪽
또한 기본 날짜 및 시간 값을 생성하는 방법을 정확히 읽어보는 것도 유용할 수 있습니다.
아래 링크에 설명된 대로 DATTIME 및 TIMESTAMP 데이터 유형을 모두 설정하여 해당 행에 대한 INSERT 작업의 현재 날짜 및 시간에 대한 기본값을 열에 지정할 수 있습니다.또는 업데이트 작업의 필드에서 현재 날짜와 시간을 설정하도록 업데이트를 설정할 수 있습니다.
링크:
http://dev.mysql.com/doc/refman/5.7/en/.htmlhttp ://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html
다음은 CREATE TABLE 문에서 두 가지 모두의 모습입니다.
CREATE TABLE t1 (
ts1 TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
,ts2 TIMESTAMP DEFAULT NOW()
);
CURRENT_TIMESTAMP는 NOW()의
또한 TIMESTAMP 또는 DATTIME 필드를 NULL로 설정하면 DEFAULT 열이 날짜 시간 값이 아닌 NULL로 변경됩니다(자세한 내용은 링크 참조).
날짜 범위가 될 수 . DATTIME 는과같날짜포수있다습니될함가위.
~ 1000-01-01 ~ 9999-12-31
다음과 같습니다. TIMESTAMP 범위 같습 니다다 과음는 ▁while 니다습.
00 ~ 03 1970-01-01 00:00:01 ~ 2038-01-190 03:14:07
DATTIME과 TIMESTAMP 사이의 추가 비교는 이 MySQL 매뉴얼 페이지를 참조하십시오.
제 블로그 게시물을 인용하겠습니다. "MySQL은 어떤 이유로든 테이블당 하나의 자동 업데이트 타임스탬프만 허용합니다.이 문제를 해결하는 방법은 여러 가지가 있지만 모든 방법이 썩지는 않습니다."
각 타임스탬프에 대해 트리거를 사용하는 것이 좋습니다.
CREATE TRIGGER customer_create BEFORE INSERT ON `customer`
FOR EACH ROW SET NEW.created_at = NOW(), NEW.updated_at = NOW();
자세한 내용은 게시물 자체를 참조하십시오.
언급URL : https://stackoverflow.com/questions/11400147/mysql-current-timestamp-as-default
'programing' 카테고리의 다른 글
PDO로 연결 시간 제한 설정 (0) | 2023.08.22 |
---|---|
Springs XmlBean Factory는 더 이상 사용되지 않습니다. (0) | 2023.08.22 |
PHP 사전 설정은 허용되는 숫자만 대체합니다. (0) | 2023.08.22 |
오라클에서 행이 있는지 확인하는 가장 빠른 쿼리? (0) | 2023.08.22 |
PowerShell에서 $null 어레이를 테스트하는 방법 (0) | 2023.08.22 |