2012-12-10 2 views
0

삽입 트리거 이후에 ​​문제가 있습니다. 테이블에 데이터를 삽입 할 때 날짜를 자동으로 업데이트해야하며 현재 날짜 여야합니다. 하지만 다음 쿼리를 실행할 때 테이블에 제대로 작동하지 않습니다. 난이 트리거 생성이어서삽입 트리거 현재 날짜가 업데이트되지 않습니다.

DROP TABLE IF EXISTS `ignite`.`products`; 
CREATE TABLE `ignite`.`products`(
    `products_id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `products_model` varchar(30) NOT NULL, 
    `model_hash` bigint(20) unsigned NOT NULL, 
    `Product_name` varchar(45) NOT NULL, 
    `created` datetime NOT NULL, 
    PRIMARY KEY (`products_id`) 
) ENGINE=MyISAM AUTO_INCREMENT=977 DEFAULT CHARSET=latin1; 

: 우선 테이블을 생성

use ignite; 
CREATE TRIGGER created_date BEFORE INSERT ON products 
FOR EACH ROW 
SET NEW.created = NOW(); 

을하지만,이 테이블의 데이터를 삽입하고 때

use ignite; 
INSERT INTO products 
(products_id, products_model, model_hash, Product_name) 
values 
(123, "456645", 457567, "awetert"); 

이 도시되어 다음 오류 :

field 'created' does not have default value. error-1364 
+0

트리거가 삽입하기 전에 실행되도록 설정해야합니다. 업데이트 할 행이 아직 존재하지 않습니다. 또한 생성 된 열의 기본값을 CURRENT_TIMESTAMP로 설정할 수 있으므로 트리거를 사용하면 업데이트가 완전히 필요하지 않습니다. – WebChemist

답변

0

INSERT 문에 created 값이 포함되어 있지 않기 때문입니다. 예를 들어 날짜 시간이 0 인 값을 포함해야합니다.

INSERT INTO products 
(products_id, products_model, model_hash, Product_name, created) 
values 
(123, "456645", 457567, "awetert", "0000-00-00 00:00:00"); 
관련 문제