2012-07-22 3 views
0

내 SQL 쿼리에 2 타임 스탬프 열을 만들기 위해 내가이 문제를 해결할 수있는 방법이1 개 MySQL의 테이블

ALTER TABLE `exercises` 
ADD COLUMN `creation_dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `lesson_id`, 
ADD COLUMN `modification_dt` timestamp NULL DEFAULT '' ON UPDATE CURRENT_TIMESTAMP AFTER `creation_dt`; 

그러나 점점 오류 메시지

enter image description here

처럼 보인다?

+1

[이 질문에] (http://stackoverflow.com/questions/4489548/why-there-can-be-only-one-timestamp-column-with-current-timestamp-in-default-cla)을 참조하십시오. – Wolfram

+0

아직 해결 했습니까? 방아쇠가 도움이됩니다. – Wolfram

답변

1

스크린 샷과 같이 오류 코드 1293입니다. The reason for this error seems to be some implementation details in MySQL.

DATETIME 유형의 열을 사용하여 주변을 둘러 볼 수는 있지만 현재 시간을 default 값으로 설정할 수 없습니다. 그러나 응용 프로그램 코드 또는 trigger을 사용하여이 문제를 해결할 수 있습니다. 나는 (datetimetest라고 함) 샘플 테이블을 사용하고이 같은 트리거를 추가 :

데이터베이스 스키마

CREATE TABLE `datetimetest` (
    `id` int(11) NOT NULL, 
    `created` datetime NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

CREATE TRIGGER trigger_SetCreated 
    BEFORE INSERT ON datetimetest 
    FOR EACH ROW SET NEW.created = UTC_TIMESTAMP(); 

당신은 트리거 BEFORE UPDATE를 사용하여 modified 필드에 대해 동일한 작업을 수행하거나 지금 같은 솔루션을 유지할 수 있습니다 CURRENT_TIMESTAMPON UPDATE으로 설정되는 하나의 TIMESTAMP 열만 있습니다.

-1

타임 스탬프는 여러분이 생각하는대로 아닙니다 :-) 나는 datetime 컬럼을 대신 쓰고 싶습니다.

0

CURRENT_TIMESTAMP과 함께 여러 개의 열을 하나의 테이블에 가질 수 없습니다. 정말로 필요한 경우 '삽입하기'트리거를 사용하여 에뮬레이션 할 수 있습니다.

0

테이블에 타임 스탬프를 여러 개 가질 수 없습니다. 테이블에 두 개의 날짜/datetime을 삽입하려면 하나의 타임 스탬프와 다른 datetime 형식으로 이동하십시오.