Я бегу MySQL 5.1.48 на Windows XP и следующий тест триггер не работает:Ошибка 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());
На моем спускового тесте я все еще получаю сервер MySQL о том, что UpdateDateTime не имеет значения по умолчанию.
Я пробовал все, что у меня в своем распоряжении, поэтому я думал, что попрошу вас помочь много;) Любые идеи?
Приветствия, Martijn
PS: X-размещены на London Java User Group и список рассылки Ikasan EIP.
Привет, паскаль, это, безусловно, решает его. Да, хотя я немного удивлен, что сначала проверяется ограничение. Если кто-то еще подумает об этом, то, пожалуйста, поделитесь! –
Да, это странно. Я бы предположил, что триггер 'before' происходит до проверки ограничений ... – pascal
Я понимаю, что это принятый ответ, однако кто-нибудь может подтвердить это ограничение? Я просто ищу уверенность (* теперь проверяю документы MySQL *) – Dan