2
나는 윈도우 XP에서 MySQL 5.1.48을 실행하고있어 다음과 같은 트리거 테스트가 작동하지 않습니다 내 트리거 테스트에트리거하기 전에 MySQL INSERT가 실패합니까?
-- Drop the old table
DROP TABLE IF EXISTS `ikasan01`.`ikasanwiretap`;
-- Create
CREATE TABLE `ikasan01`.`ikasanwiretap` (
`Id` bigint(20) NOT NULL AUTO_INCREMENT,
`ModuleName` varchar(255) NOT NULL,
`FlowName` varchar(255) NOT NULL,
`ComponentName` varchar(255) NOT NULL,
`EventId` varchar(255) NOT NULL,
`PayloadId` varchar(255) NOT NULL,
`PayloadContent` varchar(255) NOT NULL,
`CreatedDateTime` datetime NOT NULL,
`UpdatedDateTime` datetime NOT NULL,
`Expiry` datetime NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- In order to use now() as a DEFAULT value on a datetime column we
have to do it via a BEFORE INSERT TRIGGER
CREATE TRIGGER defaultUpdateDateTime
BEFORE INSERT ON ikasanwiretap FOR EACH ROW
SET NEW.UpdatedDateTime = now();
-- Test the trigger
insert into IkasanWiretap (ModuleName, FlowName, ComponentName,
EventId, PayloadId, PayloadContent, CreatedDateTime, Expiry) values
('3', '3', '3', '3', '3', '3', now(), now());
나는 여전히 UpdateDateTime가 기본값이 없습니다한다는 MySQL 서버를 얻을.
내가 처분 할 때 거의 모든 것을 시도 했으므로 도움이 될만한 질문을 던지 셨다.) 아이디어가 있습니까?
건배, 마티
PS : 런던 자바 사용자 그룹과 Ikasan EIP의 메일 링리스트에 X-기록했다.
안녕하세요 파스칼입니다. 그렇지만 제약 조건을 먼저 확인하는 것이 약간 놀랍지 만 확실히 그렇습니다. 다른 사람이 이것에 대해 더 생각하고 있다면 공유하십시오! –
예, 이상합니다. 제약 조건 유효성 검사 전에 'before'트리거가 발생했다고 가정했을 것입니다 ... – pascal
나는 이것이 허용 된 대답이라는 것을 알고 있지만 누구나이 제한을 더 확인할 수 있습니까? 나는 단지 확실성을 찾고있다. (* MySQL 문서를 지금 확인한다.) – Dan